对北京新发地当时菜品三十天内价格分布式爬取(1)---(获取当时菜品数据并构建请求数据推入redis)

本次项目网页url
北京新发地: http://www.xinfadi.com.cn/priceDetail.html
在这里插入图片描述
我们首先创建一个爬虫用于收集url与请求的data然后b,c,d使用RedisCrawlSpider来对数据进行分布式爬取
在此篇中我们仅介绍爬虫a

一.获取当天所有菜品数据

在这里插入图片描述

这是一条请求的负载我们只需要对pubDateStartTime和pubDateEndTime进行更改就能够获取指定日期的菜品数据

i = datetime.datetime.now()
endtime=str(i.year)+'/'+"{:02d}".format(i.month)+'/'+"{:02d}".format(i.day)

这两行代码将获取今日日期并将其格式化为我们需要的格式
我们已经搞定了data现在我们发送请求分析数据

data1={
'limit': '20',
'current': '1',
'pubDateStartTime': starttime,
'pubDateEndTime': endtime,
'prodPcatid': '',
'prodCatid': '',
'prodName': ''
}
category = requests.post("http://www.xinfadi.com.cn/getPriceData.html",data=data1).json()

在这里插入图片描述

我们将获取到这些数据我们看到只有20条因为我们data中的limit设置为20
在返回的数据中我们可以发现count: 487意味着所有数据为487条所以我们只需要将data中的limit修改为count即可一次请求获取全部数据

二.构建请求用的json数据包并推入redis

我们在上一步已经获取了当日所以菜品信息
在这里插入图片描述
这是我们对大白菜三十天内价格信息进去请求的data其中我们只需要更改limit,time及prodname就可获取我们想要的数据

urls='http://www.xinfadi.com.cn/getPriceData.html'
for i in result["list"]:
    print(i)
    form_data={
        "limit": "999",
        "current": "1",
        "pubDateStartTime":f"{histytime}",
        "pubDateEndTime":f"{endtime}",
    "prodPcatid":"",
    "prodCatid":"",
    "prodName":f"{i['prodName']}"
    }
    dict={"url":f"{urls}","form_data":f"{json.dumps(form_data)}","meta":""}
    v = r.lpush('xinfadi',json.dumps(dict) )

3.源码

import datetime
import json

import requests
import redis


# 建立Redis 链接
r = redis.Redis(host='localhost', port=6379, db=0)
i = datetime.datetime.now()
s=i+datetime.timedelta(days=-1)
h=i+datetime.timedelta(days=-30)
endtime=str(i.year)+'/'+"{:02d}".format(i.month)+'/'+"{:02d}".format(i.day)
starttime=str(s.year)+'/'+"{:02d}".format(s.month)+'/'+"{:02d}".format(s.day)
histytime=str(h.year)+'/'+"{:02d}".format(h.month)+'/'+"{:02d}".format(h.day)
print(starttime,endtime)
data1={
'limit': '20',
'current': '1',
'pubDateStartTime': starttime,
'pubDateEndTime': endtime,
'prodPcatid': '',
'prodCatid': '',
'prodName': ''
}
category = requests.post("http://www.xinfadi.com.cn/getPriceData.html",data=data1).json()
number=category["count"]
print(number)
data1["limit"]=number
result=requests.post("http://www.xinfadi.com.cn/getPriceData.html",data=data1).json()
#print(result)

urls='http://www.xinfadi.com.cn/getPriceData.html'
for i in result["list"]:
    print(i)
    form_data={
        "limit": "999",
        "current": "1",
        "pubDateStartTime":f"{histytime}",
        "pubDateEndTime":f"{endtime}",
    "prodPcatid":"",
    "prodCatid":"",
    "prodName":f"{i['prodName']}"
    }
    dict={"url":f"{urls}","form_data":f"{json.dumps(form_data)}","meta":""}
    v = r.lpush('xinfadi',json.dumps(dict) )






本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/655303.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu22.04安装调节显示器亮度工具

1 介绍 软件名叫 DDC/CI control,官网 2 安装方法 sudo apt install intltool i2c-tools libxml2-dev libpci-dev libgtk2.0-dev liblzma-dev3 效果 进入软件,忽略告警信息

家政保洁服务小程序怎么做?家政公司快速搭建专属小程序

在数字化时代背景下,家政保洁服务行业也迎来了线上转型的新机遇。家政保洁服务小程序,作为一种新型的线上服务平台,不仅能够提升家政公司的服务效率,还能为顾客提供更加便捷的预约上门服务体验。那么家政保洁服务小程序怎么做呢&a…

电脑无法远程桌面连接,关于电脑无法建立远程桌面连接的问题分析与解决方案

在信息化快速发展的今天,远程桌面连接已成为许多企业和个人用户进行远程办公、技术支持以及数据管理的必备工具。然而,当电脑无法建立远程桌面连接时,可能会对用户的工作和日常生活造成极大的不便。本文将深入分析电脑无法远程桌面连接的原因…

来自学术界的知识库 RAG 调优方案实践(一)

背景介绍 在之前的文章详细梳理过工业界的 RAG 方案 QAnything 和 RagFlow,这次主要整理下来自学术界的一系列 RAG 优化方案。 主要关注优化方案对应的设计思想以及相关的实现,希望可以对大家的 RAG 服务效果提升有所帮助。 基础介绍 在综述论文 Ret…

双指针法和链表练习题(2024/5/28)

1面试题 02.07. 链表相交 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意&#xf…

【MySQL】MySQL在 Linux下环境安装

MySQL的安装 1.卸载不要的环境2.获取mysql官方yum源3.安装mysql yum源4.安装mysql服务5.登录问题5.配置my.cnf6.设置开机启动(可以不设) 说明: 安装与卸载中,用户全部切换成为root,一旦安装,普通用户也能使用的 1.卸载不要的环境…

IS-IS开销值和协议优先级

原理概述 IS-IS 协议为路由器的每个 IS-IS 接口定义并维护了一个 Level-1开销值和一个 Level-2开销值。开销值可以在接口上或者全局上手动配置,也可以使用 Auto-Cost 自动计算确定。开销值的优先顺序为:接口上手动配置的开销值,全局上手动配置…

# 分布式链路追踪_skywalking_学习(2)

分布式链路追踪_skywalking_学习(2) 一、分布式链路追踪_skywalking :Rpc 调用监控 1、Skywalking(6.5.0) 支持的 Rpc 框架有以下几种: Dubbo 2.5.4 -> 2.6.0Dubbox 2.8.4Apache Dubbo 2.7.0Motan 0.2.x -> 1.1.0gRPC 1.…

数据分析必备:一步步教你如何用Pandas做数据分析(10)

1、Pandas 文本处理 Pandas 文本处理操作实例 在本章中,我们将使用基本的Series / Index讨论字符串操作。在随后的章节中,我们将学习如何在DataFrame上应用这些字符串函数。 Pandas提供了一组字符串函数,可以轻松地对字符串数据进行操作。最…

OpenHarmony 实战开发——内核对象队列之算法详解

前言 OpenAtom OpenHarmony(以下简称“OpenHarmony”) LiteOS-M 内核是面向 IoT 领域构建的轻量级物联网操作系统内核,具有小体积、低功耗、高性能的特点。在嵌入式领域的开发工作中,无论是自研还是移植系统,均绕不开…

超越中心化:Web3的去中心化应用探索

随着区块链技术的迅速发展,Web3作为其最前沿的应用之一,正引领着互联网进入了一个新的时代。Web3不仅仅是技术的进步,更是一种全新的思维方式和社会模式,其核心理念是去中心化、自治和透明,这与传统的中心化互联网模式…

视创云展「VR直播」是什么?有哪些功能和应用场景?

视创云展「VR直播」通过“3D沉浸式展厅直播高互动感”的创新玩法,使企业随时随地举办一场低成本、高互动、能获客的元宇宙直播活动成为可能。「VR直播」能实现3D展厅内VR场景漫游,更结合音视频交互、同屏互动等新功能,为用户带来更沉浸的虚拟…

.NET周刊【5月第4期 2024-05-26】

国内文章 开源低代码框架 ReZero API 正式版本发布 ,界面操作直接生成API https://www.cnblogs.com/sunkaixuan/p/18201175 ReZero是一款.NET6的中间件,采用MIT许可证开源,目的是降低.NET Core开发的门槛。它提供界面操作生成API的功能&am…

nacos安装与使用

1.nacos简介与安装 什么是注册中心(服务治理) 服务注册:服务提供者provider,启动的时候向注册中心上报自己的网络信息 服务发现:服务消费者consumer,启动的时候向注册中心上报自己的网络信息,拉…

《C++ Primer Plus》第十二章复习题和编程练习

目录 一、复习题二、编程练习 一、复习题 1. 假设String类有如下私有成员: // String 类声明 class String { private: char* str;int len;// ... };a. 下述默认构造函数有什么问题? String::String() { } // 默认构造函数b. 下述构造函数有什么问题…

民国漫画杂志《时代漫画》第29期.PDF

时代漫画29.PDF: https://url03.ctfile.com/f/1779803-1248635405-bf3c87?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了,截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!

分享之远程调试

1:在线上启动脚本添加如下的内容: #! /bin/sh# 设置启动的jar SERVICE_NAME"xxx.jar"PRJ_BIN_DIR$(dirname $(readlink -f "$0")) SERVICE_HOME$(dirname $PRJ_BIN_DIR)LOGS_DIR$SERVICE_HOME/logs # 控制台日志 STDOUT_FILE$SERVICE_HOME/log…

New Phytologist:杨树特有miRNA在调控杨树抗旱中的分子机制

2024年3月6日,林木遗传育种全国重点实验室、北京林业大学生物科学与技术学院尹伟伦与夏新莉教授课题组在New Phytologist(中科院一区,影响因子9.4)期刊发表了题为“The miR6445-NAC029 module regulates drought tolerance by reg…

Python3 笔记:Python的所有关键字

查看Python的关键字首先需要用import导入keyword模块 import keyword # 查看Python的所有关键字,先用import导入keyword模块 print(keyword.kwlist) 运行结果: [False, None, True, and, as, assert, async, await, break, class, continue, def, …

96.网络游戏逆向分析与漏洞攻防-ui界面的设计-角色管理功能的界面设计

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果,代码看不懂是正常的,只要会抄就行,抄着抄着就能懂了 内容…