新发地获取蔬菜水果等食品价格

爬取信息具体如下:
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信息

我们可以看出前前两个参数的用处分别是

  1. limit :商品数量
  2. 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爬虫项目】新发地蔬菜水果等食品价格爬取(详细附源码)相关推荐

  1. Android App开发实战项目之仿喜马拉雅的听说书App实现(超详细 附源码和演示视频)

    需要全部源码请点赞关注收藏后评论区留下QQ~~~ 一.需求分析 用户不仅能在平台上收听音频,还能成为内容创作者,总之长音频分享平台需要满足两种角色的使用:一种是作为内容创作者发布自己的音频,另一种是作 ...

  2. Python启发式算法中爬山法的讲解及解方程问题实战(超详细 附源码)

    一.启发式算法 还有一类重要的迭代法,它的迭代关系式不依赖问题的数学性能,而是受某种自然现象的启发而得到,称为启发式算法(Heuristic Algorithm),如爬山法.遗传算法.模拟退火算法.蚁 ...

  3. Python爬虫学习第三章-4.3-使用xpath解析爬取全国城市名称

    Python爬虫学习第三章-4.3-使用xpath解析爬取全国城市名称   这一节主要是使用xpath解析爬取全国城市名称 这里使用的网址是:空气质量历史数据查询   这一个案例体现的点主要是xpat ...

  4. 【爬虫+数据可视化毕业设计:英雄联盟数据爬取及可视化分析,python爬虫可视化/数据分析/大数据/大数据屏/数据挖掘/数据爬取,程序开发-哔哩哔哩】

    [爬虫+数据可视化毕业设计:英雄联盟数据爬取及可视化分析,python爬虫可视化/数据分析/大数据/大数据屏/数据挖掘/数据爬取,程序开发-哔哩哔哩] https://b23.tv/TIoy6hj

  5. 【【数据可视化毕业设计:差旅数据可视化分析,python爬虫可视化/数据分析/大数据/大数据屏/数据挖掘/数据爬取,程序开发-哔哩哔哩】-哔哩哔哩】 https://b23.tv/iTt30QG

    [[数据可视化毕业设计:差旅数据可视化分析,python爬虫可视化/数据分析/大数据/大数据屏/数据挖掘/数据爬取,程序开发-哔哩哔哩]-哔哩哔哩] https://b23.tv/iTt30QG ht ...

  6. 零基础入门python爬虫之《青春有你2》选手信息爬取

    零基础入门python爬虫之<青春有你2>选手信息爬取 完成<青春有你2>选手图片爬取,生成选手图片的绝对路径并输出,统计爬取的图片总数量.使用工具:requests模块.Be ...

  7. python:pyqt5+mysql=学生信息管理系统(图文并茂,超详细, 附源码)——增删改查篇

    python:pyqt5+mysql=学生信息管理系统(图文并茂,超详细, 附源码)--增删改查篇 前言 一.主界面的样式 二.学生信息的增,删,改,查 1.增加学生信息 2.删除学生信息 3.更改学 ...

  8. 【Python】基金/股票 最大回撤率计算与绘图详解(附源码和数据)

    如果你想找的是求最大回撤的算法,请跳转:[Python] 使用动态规划求解最大回撤详解 [Python]基金/股票 最大回撤率计算与绘图详解(附源码和数据) 0. 起因 1. 大成沪深300指数A 5 ...

  9. JAVA计算机毕业设计水果食品顺溯源系统(附源码、数据库)

    JAVA计算机毕业设计水果食品顺溯源系统(附源码.数据库) 目运行 环境项配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe ...

最新文章

  1. 【Python】青少年蓝桥杯_每日一题_9.27_输出最大值最小值平均值
  2. MySQL DTAETIME、TIMESTAMP、DATE、TIME、YEAR(日期和时间类型)
  3. 干货!这可能是你见过最全的 Python 时间处理方法总结
  4. 树状数组-神奇的二进制
  5. create-react-app 脚手架工具完善自己所需要的入口文件
  6. 面试常考题:不调用库函数,怎样实现字符串操作函数?
  7. 可视化查看依赖关系_图可视化分析解决方案KeyLines介绍
  8. VMware报错“锁定文件失败“解决方法
  9. 读书感悟之,从术到道
  10. sbt命令行常用命令
  11. antd 使用upload 组件,使用自定义上传行为,覆盖默认action 访问请求
  12. PHPExcel 在LINUX环境中导出乱码的问题解决
  13. 漫谈Clustering:高斯混合模型(GMM)
  14. python实现将android手机通讯录vcf文件转化为csv
  15. Java依赖包下载地址
  16. 麦克劳林公式怎么记忆_泰勒展开的公式怎么记忆?
  17. python数据精度_python数字精度
  18. UVM-入门实验2_uvm代码实现
  19. linux vim命令详解 编辑文件 保存 退出
  20. 服务器向客户端推送消息之——WebSocket详细使用

热门文章

  1. Studio One6最新版本升级 新增20项功能详解
  2. 介绍几本学习php编程比较好的书籍
  3. HTML鼠标怎么变成放大镜的,鼠标箭头总变成放大镜样式,怎么恢复?
  4. 第四章——数字信号传输方法的比较
  5. 【libevent_libev】libevent_libev
  6. AUMA MesseTrend 2020调查:参展商在展会质量上投入更多资金
  7. Java抽象类和接口的区别和联系
  8. 利用Barcode进行条形码生成的大致过程(搬运,原作者不详)
  9. coreldraw梯形校正_CorelDRAW如何绘制等腰梯形
  10. 组队学习笔记Task1:论文数据统计