用 Python 采集蔬菜与肉类商品历史价格

发表于:2021-11-08 09:28

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:道才    来源:可以叫我才哥

#
Python
分享:
  前段时间,菜市场出现了一个奇特的现场:菜比肉贵!
  以北京为例,像猪肉的价格基本上从年初的25块/斤逐步下降到现在的10块/斤。
猪肉价格走势
  而一些蔬菜比如油麦菜从年初的2.5元/斤到现在的4.5元/斤,高的时候能有8元/斤;再比如菠菜从年初的1.7元/斤到现在的4元/斤,高的时候也能到7-8元/斤。
油麦菜价格走势
  广大网友直呼:以前没钱吃肉,现在没钱吃菜!
  我们知道前年 50块一斤猪肉(也是离谱),现在可以买5斤,于是就有了下面这张对比图:
以前没钱吃肉,现在没钱吃菜
  那么,蔬菜价格目前到底是什么情况呢?全年一般又是什么样的走势呢?
  今天,我们就用Python采集一下北京新发地菜市场的价格行情来一起了解下!
  1. 网页分析
  目标网站:北京新发地
  网址信息:http://www.xinfadi.com.cn/priceDetail.html
  我们通过翻页(下一页)查看后续数据,但是发现地址栏url没变,所以是动态加载的,那么老规矩:F12开发者模式—>Network—>XHR,然后翻页可以找到数据请求信息如下:
  最终,我们确认请求接口地址及请求方式与信息如下:
  请求类型:post
  url = r'http://www.xinfadi.com.cn/getPriceData.html' 
  # 请求参数如下,其中page为页码 
  FormData={ 
          'limit': 20, 
          'current': page, 
          'pubDateStartTime': '2021/01/01', 
          'pubDateEndTime': '2021/10/30', 
          'prodPcatid':'', 
          'prodCatid':'', 
          'prodName':'', 
          } 

  确定以上信息后,我们就可以简单的写代码进行数据采集了!
  2. 数据采集
  由于请求到的数据是json格式,比较好处理,我们直接上代码(完整代码)。
  如果对代码不是很了解,可以加笔者好友或者加咱们交流群讨论!
  import requests 
  import pandas as pd 
  from tqdm import tqdm 
   
  headers = { 
      "Accept-Encoding": "Gzip",  
      "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36", 
      } 
  dfList = [] 
  url = r'http://www.xinfadi.com.cn/getPriceData.html' 
  for page in tqdm(range(1,5373)): 
      FormData={ 
          'limit': 20, 
          'current': page, 
          'pubDateStartTime': '2021/01/01', 
          'pubDateEndTime': '2021/10/30', 
          'prodPcatid':'', 
          'prodCatid':'', 
          'prodName':'', 
          } 
       
      r = requests.post(url, data=FormData, headers=headers) 
      data = r.json() 
      dataList = data['list'] 
      df = pd.DataFrame(dataList) 
      dfList.append(df) 
       
  df = pd.concat(dfList) 
  df.to_excel(r'菜品历史价格行情.xlsx',index=None) 

采集进度
  可以看到,其实该网站并没有反爬,但是我们用最简单的这种采集方式花了2小时23分钟,属实有点久。
  那么怎么可以加速呢?进程、线程与携程等方式可以加速,关于这方面的知识与应用我们会在后续进行专题介绍哈,这里先预告一下。
  最终,我们采集到10万多条数据如下:
数据预览
  以上就是本次全部内容,由于菜品类型较多,这里不做展开处理,大家可以自行下载研究哈。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号