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

news2024/12/23 13:34:23

本次项目网页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) )






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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Creo装配体中只显示一部分零部件

从模型树中选中要显示的零部件,也可以结合Ctrl框选的方式选择对象。然后在模型树右击等会弹出选项,点选----即可

内存泄漏面面谈

概述 主要介绍了内存泄漏的关注点是对象,对内存问题进行了分类并且确定本文关注点是内存泄漏,15种内存泄漏判断方式,hprof文件的用法和分析过程,以及memory profiler工具一些基本概念,最后提到了如何触发内存泄漏问题…

护网2024-攻防对抗解决方案思路

一、护网行动简介 近年来,网络安全已被国家上升为国家安全的战略层面,网络安全同样也被视为维护企业业务持续性的关键。国家在网络安全治理方面不断出台法规与制度,并实施了一些大型项目和计划,如网络安全法、等级保护、网络安全…

Nacos服务分级存储模型

Nacos服务分级存储模型 Nacos把服务拆分为三级 一级 服务 二级 集群 三级 实例 将某服务 例如订单模块 拆分为北京 上海 杭州集群 为了避免跨地域调用集群实例 就近原则先调用本地的实例 不行再去跨地域调用 提高容灾处理能力 负载均衡: 当服务去请求本地的集群实例 实例很多的…

ssm136公司项目管理系统设计与实现+jsp

公司项目管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本T公司项目管理系统就是在这样的大环境下诞生,其可以帮助管理者在…

SRS视频服务器应用研究

1.SRS尝试从源码编译启动 1.1.安装ubuntu 下载镜像文件 使用VMWare安装,过程中出现蓝屏,后将VM的软件版本从15.5升级到17,就正常了。

基于SpringBoot+Vue+Redis+Mybatis的商城购物系统 【系统实现+系统源码+答辩PPT】

前言 该系统采用SpringBootVue前后端分离开发,前端是一个单独的项目,后端是一个单独的项目。   技术栈:SpringBootVueMybatisRedisMysql   开发工具:IDEA、Vscode   浏览器:Chrome   开发环境:JDK1…

Java类和包

一.什么是包 粗暴的讲,包就是一个文件夹 、在src路径下,可以创建一个软件包,这个就是包 我们来创建一个包 这里我们看到,我们创建了两个包,在俩包中分别创建一个Java文件 如果我想在text中调用text2,看…

【MiniCPM-V】win10本地部署踩坑

尝试最新大模型MiniCPM-V,题主的3080Ti 16G显存,CUDA12.3,选用模型openbmb/MiniCPM-Llama3-V-2_5。 踩坑经过 Could not create share link. Please check your internet connection or our status page: https://status.gradio.app 解决方…

云服务器如何使用局域网服务器的磁盘空间

说明 云服务器中的磁盘空间不足时,想要开通更多的磁盘空间,但奈何价格太贵,开不起 刚好局域网中有闲置的服务器空间可以拿来用,这里我们直接使用Samba服务来共享文件夹,使用frp来进行内网穿透; 1、磁盘挂…

ICPC训练赛补题集

ICPC训练赛补题集 文章目录 ICPC训练赛补题集D - Fast and Fat (负重越野)I-路径规划G. Inscryption(邪恶铭刻)NEW Houses D - Fast and Fat (负重越野) 原题链接:原题链接 题意:体重大的背体重小的速度不变,体重小的背体重大的速度会变化&a…

家用洗地机哪个品牌好?家用洗地机排行榜前十名

随着洗地机逐渐进入大众视野,这种集吸、拖、洗功能于一体的清洁工具,凭借其高效便捷的特点,成为家庭清洁的新宠。洗地机不仅能够减少地面清洁时间,节省体力,还能提高清洁效果。然而,面对琳琅满目的洗地机品…

多系统集成的项目周期为何普遍较长?

在现代企业的运营中,各种信息系统的集成已成为提升效率和竞争力的关键。然而,当工厂的ERP系统需要与MES、SRM、WMS、CRM等其他系统集成时,项目周期往往长达一年以上,这不仅耗费时间、人力和财力,还可能影响企业的正常运…

体验SmartEDA的高效与便捷,电子设计从未如此简单

SmartEDA:革新电子设计,让高效与便捷触手可及 在快节奏的现代生活中,科技日新月异,各行各业都在寻求更高效、更便捷的解决方案。对于电子设计行业而言,SmartEDA的出现,无疑是一场革命性的变革。它以其高效…

腾讯云联络中心ivr调用自定义接口

1&#xff0c;java代码&#xff1a;http接口 RequestMapping(value "/getMsg5", method RequestMethod.POST) public Map<String, String> index(RequestBody Map<String, String> params) {String id params.get("id");HashMap<String…

ssm137基于SSM框架的微博系统+vue

微博系统网站的设计与实现 摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以对于信息的宣传和管理就…

惯性测量单元M-G366PDG提供低误差系数的解决方案

人形机器人、自动驾驶的快速发展&#xff0c;促成了惯性测量单元(IMU)的爆火市场。据相关研究报告统计&#xff0c;IMU全球市场规模从2018年的99.94亿美元增加至2021年的135.95亿美元预计2027年将达到222.53亿美元&#xff0c;2021年至2027年复合增长率达8.56%。而由于智能技术…

USST新生训练赛div2+div3题解

目录 前言题解部分B Ichihime and Triangle(800)题目大意题解代码实现 C Kana and Dragon Quest game(900)题目大意题解代码实现 J Squares and Cubes(800)题目大意题解代码实现 F Double Sort(1200)题目大意题解代码实现 I Minimize the Thickness(1100)题目大意题解代码实现 …

三十六计的笔记

系列文章目录 三十六计的笔记 文章目录 系列文章目录1、瞒天过海2、围魏救赵3、借刀杀人4、以逸待劳5、趁火打劫6、声东击西7、无中生有8、暗渡陈仓9、隔岸观火10、笑里藏刀11、李代桃僵12、顺手牵羊13、打草惊蛇14、借尸还魂15、调虎离山16、欲擒故纵17、抛砖引玉18、擒贼擒王…

【LeetCode算法】第88题:合并两个有序数组

目录 一、题目描述 二、初次解答 三、官方解法 四、总结 一、题目描述 二、初次解答 1. 思路&#xff1a;首次想到的解法&#xff1a;定义一个mn长度的辅助数组&#xff0c;从头遍历这两个数组&#xff0c;谁小就放进辅助数组中并且对应往后走&#xff0c;最后使用memcpy函…