600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 天一冷 就想大口吃肉 爬取一座城市里的烤肉店数据(附完整Python爬虫代码)

天一冷 就想大口吃肉 爬取一座城市里的烤肉店数据(附完整Python爬虫代码)

时间:2022-12-21 15:21:33

相关推荐

天一冷 就想大口吃肉 爬取一座城市里的烤肉店数据(附完整Python爬虫代码)

前言

天一冷,就想吃肉,贴好秋膘才能好过冬。对于肉食主义者,吃肉简直幸福感爆棚!特别是烤肉,看着一块块肉慢慢变熟,听着烤盘上“滋滋”的声响,这种期待感是任何其他食物都无法带来的。如果说甜点是“乍见之欢”,那肉则是“久处不厌”。

为了造福“烤肉控”们,今天就用Python爬取一座城市的烤肉店数据,选出最适合的一家

准备工作

环境

python 3.6pycharmrequests >>> 发送请求 pip install requestscsv >>> 保存数据

了解爬虫最基本的思路

一. 数据来源分析
确定我们爬取的内容是什么?

爬取店铺数据去找这些东西是从哪里来的

通过开发者工具进行抓包分析, 分析数据来源

二. 代码实现过程
发送请求, 对于找到数据包发送请求获取数据, 根据服务器给你返回的response数据来的解析数据, 提取我们想要的内容数据保存数据, 保存到csv文件多页爬取, 根据url地址参数变化

代码实现过程

1. 发送请求

url = 'https://apimobile.某/group/v4/poi/pcsearch/70'data = {'uuid': '6e481fe03995425389b9.1630752137.1.0.0','userid': '266252179','limit': '32','offset': 32,'cateId': '-1','q': '烤肉','token': '4MJy5kaiY_0MoirG34NJTcVUbz0AAAAAkQ4AAF4NOv8TNNdNqymsxWRtJVUW4NjQFW35_twZkd49gZqFzL1IOHxnL0s4hB03zfr3Pg',}# 请求头 都是可以从开发者工具里面直接复制粘贴# ser-Agent: 浏览器的基本信息headers = {'Referer': 'https://chs.某/','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36'}# 发送请求response = requests.get(url=url, params=data, headers=headers)

200 表示请求成功 状态码 403 你没有访问权限

2. 获取数据

print(response.json())

3. 解析数据

result = response.json()['data']['searchResult']# [] 列表 把里面每个元素都提取出来 for循环遍历for index in result:# pprint.pprint(index)# f'{}' 字符串格式化index_url = f'https://www.某/meishi/{index["id"]}/'# ctrl + Ddit = {'店铺名称': index['title'],'店铺评分': index['avgscore'],'评论数量': index['comments'],'人均消费': index['avgprice'],'所在商圈': index['areaname'],'店铺类型': index['backCateName'],'详情页': index_url,}csv_writer.writerow(dit)print(dit)

4. 保存数据

f = open('烤肉数据.csv', mode='a', encoding='utf-8', newline='')csv_writer = csv.DictWriter(f, fieldnames=['店铺名称','店铺评分','评论数量','人均消费','所在商圈','店铺类型','详情页',])csv_writer.writeheader() # 写入表头

5.翻页

for page in range(0, 1025, 32):url = 'https://apimobile.某/group/v4/poi/pcsearch/70'data = {'uuid': '6e481fe03995425389b9.1630752137.1.0.0','userid': '266252179','limit': '32','offset': page,'cateId': '-1','q': '烤肉','token': '4MJy5kaiY_0MoirG34NJTcVUbz0AAAAAkQ4AAF4NOv8TNNdNqymsxWRtJVUW4NjQFW35_twZkd49gZqFzL1IOHxnL0s4hB03zfr3Pg',}

运行代码得到数据

完整代码

f = open('烤肉数据1.csv', mode='a', encoding='utf-8', newline='')csv_writer = csv.DictWriter(f, fieldnames=['店铺名称','店铺评分','评论数量','人均消费','所在商圈','店铺类型','详情页',])csv_writer.writeheader() # 写入表头for page in range(0, 1025, 32):url = 'https://apimobile.某/group/v4/poi/pcsearch/70'data = {'uuid': '6e481fe03995425389b9.1630752137.1.0.0','userid': '266252179','limit': '32','offset': page,'cateId': '-1','q': '烤肉','token': '4MJy5kaiY_0MoirG34NJTcVUbz0AAAAAkQ4AAF4NOv8TNNdNqymsxWRtJVUW4NjQFW35_twZkd49gZqFzL1IOHxnL0s4hB03zfr3Pg',}headers = {'Referer': 'https://chs.某/','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36'}# 发送请求response = requests.get(url=url, params=data, headers=headers)# 200 表示请求成功 状态码 403 你没有访问权限result = response.json()['data']['searchResult']# [] 列表 把里面每个元素都提取出来 for循环遍历for index in result:# pprint.pprint(index)# f'{}' 字符串格式化index_url = f'/meishi/{index["id"]}/'# ctrl + Ddit = {'店铺名称': index['title'],'店铺评分': index['avgscore'],'评论数量': index['comments'],'人均消费': index['avgprice'],'所在商圈': index['areaname'],'店铺类型': index['backCateName'],'详情页': index_url,}csv_writer.writerow(dit)print(dit)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。