采集网站内容(用Python采集一下北京新发地菜市场的价格行情(组图))
优采云 发布时间: 2022-01-16 08:18采集网站内容(用Python采集一下北京新发地菜市场的价格行情(组图))
来源:你可以叫我兄弟
作者:道菜
前段时间,菜市场上出现了诡异的一幕:菜比肉还贵!
以北京为例,猪肉价格已从年初的25元/斤逐渐下降到现在的10元/斤。
猪肉价格走势
有些蔬菜,比如莴苣,从年初的2.5元/斤,到年初的4.5元/斤,到时候可以8元/斤。他们很高;再比如年初的菠菜1.7元/斤现在是4元/斤,高的时候能达到7-8元/斤。
油菜籽价格走势
广大网友大呼:以前没钱吃肉,现在没钱吃菜!
我们知道去年50元一斤猪肉(也离谱),现在可以买5斤,所以我们有如下对比图:
那么,蔬菜价格的现状如何?全年的总体趋势是什么?今天就用Python采集来了解一下北京新发地菜市场的价格吧!
01
网页分析
目标网站:北京新发地
网址信息:
我们通过翻页(下一页)查看后续数据,但是发现地址栏的URL没有变化,所以是动态加载的,然后老规矩:F12开发者模式—>网络—>XHR,然后翻页找到数据请求信息如下:
最后我们确认请求接口地址、请求方法和信息如下:
请求类型:post
网址 = r'#39;
# 请求参数如下,其中page为页码
表单数据={
“限制”:20,
'当前页面,
'pubDateStartTime': '2021/01/01',
'pubDateEndTime': '2021/10/30',
'prodPcatid':'',
'prodCatid':'',
'产品名称':'',
}
确认以上信息后,我们就可以简单的为data采集写代码了!
02
数据采集
由于请求的数据是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万多条数据如下:
数据预览
以上就是本次的全部内容。因为菜的种类很多,这里就不一一介绍了,大家自行研究。
福利