【Python爬虫项目】新发地蔬菜水果等食品价格爬取(详细附源码)
新发地获取蔬菜水果等食品价格
爬取信息具体如下:
1.食品名称 2.最低价 3.最高价 4.平均价 5.规格 6.产地 7.单位 8.发布日期
1.检查网页源码
通过检查源码可以看出数据并不在网页源码当中,需通过动态加载获取信息,打开开发者工具进行抓包
2.抓包
刷新页面,抓取商品信息,发现一页共20条商品信息。
3.分析
查看请求头信息,比对其他页请求地址发现请求地址统一为:
url = 'http://www.xinfadi.com.cn/getPriceData.html'
请求头没有特殊内容,直接复制即可
data信息包含关键参数,选取蔬菜点击刷新重新进行抓取发现有三个参数分别是:limit,current,prodPcatid。
第1页data信息
第2页data信息
我们可以看出前前两个参数的用处分别是
- limit :商品数量
- current :页数
我们选择水果类再重新抓取进行分析,发现prodPcatid改变,我们知道该参数的作用是不同类的id
4.编写代码
import json
import requests
import threading
import pandas as pd
#新发地官网:http://www.xinfadi.com.cn/priceDetail.html
#页数
page = 1
#商品总列表
count=list()
#json列表
jsons=list()#解析网页函数
def url_parse(page):#请求地址url = 'http://www.xinfadi.com.cn/getPriceData.html'headers = {"Accept": "*/*","Accept-Encoding": "gzip, deflate","Accept-Language": "zh-CN,zh;q=0.9","Cache-Control": "no-cache","Connection": "keep-alive","Content-Length": "89","Content-Type": "application/x-www-form-urlencoded; charset=UTF-8","Host": "www.xinfadi.com.cn","Origin": "http://www.xinfadi.com.cn","Pragma": "no-cache","Referer": "http://www.xinfadi.com.cn/priceDetail.html","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36","X-Requested-With": "XMLHttpRequest",}data = {"limit": "20","current": page,"pubDateStartTime": "","pubDateEndTime": "","prodPcatid": "1186", #商品类id"prodCatid": "","prodName": "",}response=requests.post(url=url,headers=headers,data=data).text#获取商品信息response=json.loads(response)['list']#生成线程锁对象lock=threading.RLock()#上锁lock.acquire()#添加到json列表中jsons.append(response)#解锁lock.release()#解析json函数
def json_parse(product):lock=threading.RLock()lock.acquire()dic = {'品名': product['prodName'], "最低价": product['lowPrice'], '最高价': product['highPrice'],'平均价': product['avgPrice'], '规格': product['specInfo'], '产地': product['place'], '单位': product['unitInfo'],'发布日期': product['pubDate']}print(dic)#将商品信息添加到商品总列表中count.append(dic)lock.release()
def run():num=int(input('请输入爬取页数:'))#多进程解析网页for i in range(1,num+1):x=threading.Thread(target=url_parse,args=(i,))x.start()x.join()# 多进程解析jsonfor i in jsons:for product in i:y=threading.Thread(target=json_parse,args=(product,))y.start()y.join()#生成exceldata = pd.DataFrame(count)data.to_excel('蔬菜.xlsx', index=None)
if __name__ == '__main__':run()
5.运行结果
不到3秒钟就爬完了20页内容
【Python爬虫项目】新发地蔬菜水果等食品价格爬取(详细附源码)相关推荐
- Android App开发实战项目之仿喜马拉雅的听说书App实现(超详细 附源码和演示视频)
需要全部源码请点赞关注收藏后评论区留下QQ~~~ 一.需求分析 用户不仅能在平台上收听音频,还能成为内容创作者,总之长音频分享平台需要满足两种角色的使用:一种是作为内容创作者发布自己的音频,另一种是作 ...
- Python启发式算法中爬山法的讲解及解方程问题实战(超详细 附源码)
一.启发式算法 还有一类重要的迭代法,它的迭代关系式不依赖问题的数学性能,而是受某种自然现象的启发而得到,称为启发式算法(Heuristic Algorithm),如爬山法.遗传算法.模拟退火算法.蚁 ...
- Python爬虫学习第三章-4.3-使用xpath解析爬取全国城市名称
Python爬虫学习第三章-4.3-使用xpath解析爬取全国城市名称 这一节主要是使用xpath解析爬取全国城市名称 这里使用的网址是:空气质量历史数据查询 这一个案例体现的点主要是xpat ...
- 【爬虫+数据可视化毕业设计:英雄联盟数据爬取及可视化分析,python爬虫可视化/数据分析/大数据/大数据屏/数据挖掘/数据爬取,程序开发-哔哩哔哩】
[爬虫+数据可视化毕业设计:英雄联盟数据爬取及可视化分析,python爬虫可视化/数据分析/大数据/大数据屏/数据挖掘/数据爬取,程序开发-哔哩哔哩] https://b23.tv/TIoy6hj
- 【【数据可视化毕业设计:差旅数据可视化分析,python爬虫可视化/数据分析/大数据/大数据屏/数据挖掘/数据爬取,程序开发-哔哩哔哩】-哔哩哔哩】 https://b23.tv/iTt30QG
[[数据可视化毕业设计:差旅数据可视化分析,python爬虫可视化/数据分析/大数据/大数据屏/数据挖掘/数据爬取,程序开发-哔哩哔哩]-哔哩哔哩] https://b23.tv/iTt30QG ht ...
- 零基础入门python爬虫之《青春有你2》选手信息爬取
零基础入门python爬虫之<青春有你2>选手信息爬取 完成<青春有你2>选手图片爬取,生成选手图片的绝对路径并输出,统计爬取的图片总数量.使用工具:requests模块.Be ...
- python:pyqt5+mysql=学生信息管理系统(图文并茂,超详细, 附源码)——增删改查篇
python:pyqt5+mysql=学生信息管理系统(图文并茂,超详细, 附源码)--增删改查篇 前言 一.主界面的样式 二.学生信息的增,删,改,查 1.增加学生信息 2.删除学生信息 3.更改学 ...
- 【Python】基金/股票 最大回撤率计算与绘图详解(附源码和数据)
如果你想找的是求最大回撤的算法,请跳转:[Python] 使用动态规划求解最大回撤详解 [Python]基金/股票 最大回撤率计算与绘图详解(附源码和数据) 0. 起因 1. 大成沪深300指数A 5 ...
- JAVA计算机毕业设计水果食品顺溯源系统(附源码、数据库)
JAVA计算机毕业设计水果食品顺溯源系统(附源码.数据库) 目运行 环境项配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe ...
最新文章
- 【Python】青少年蓝桥杯_每日一题_9.27_输出最大值最小值平均值
- MySQL DTAETIME、TIMESTAMP、DATE、TIME、YEAR(日期和时间类型)
- 干货!这可能是你见过最全的 Python 时间处理方法总结
- 树状数组-神奇的二进制
- create-react-app 脚手架工具完善自己所需要的入口文件
- 面试常考题:不调用库函数,怎样实现字符串操作函数?
- 可视化查看依赖关系_图可视化分析解决方案KeyLines介绍
- VMware报错“锁定文件失败“解决方法
- 读书感悟之,从术到道
- sbt命令行常用命令
- antd 使用upload 组件,使用自定义上传行为,覆盖默认action 访问请求
- PHPExcel 在LINUX环境中导出乱码的问题解决
- 漫谈Clustering:高斯混合模型(GMM)
- python实现将android手机通讯录vcf文件转化为csv
- Java依赖包下载地址
- 麦克劳林公式怎么记忆_泰勒展开的公式怎么记忆?
- python数据精度_python数字精度
- UVM-入门实验2_uvm代码实现
- linux vim命令详解 编辑文件 保存 退出
- 服务器向客户端推送消息之——WebSocket详细使用