前言
大家早好、午好、晚好吖 ❤ ~欢迎光临本文章
环境使用:
-
Python 3.8
-
Pycharm
模块使用:
-
requests >>> pip install requests
-
re
-
csv
安装模块:win + R 输入cmd 输入安装命令 pip install 模块名
如果出现爆红 可能是因为 网络连接超时 切换国内镜像源
基本思路:
-
明确需求:
采集网站以及数据是什么?
店铺数据
PS: 一定要清楚, 数据是请求那个链接可以获取
通过开发者工具进行抓包分析
-
打开开发者工具: F12 / fn+F12 / 鼠标右键点击检查选择network
-
点击第二页, 第一个数据包就是我们要的链接地址
<通过关键词进行搜索,找到对应的数据包 [请求链接] >
-
代码怎么实现?
-
发送请求, 模拟浏览器对url地址发送请求 <为了得到数据>
-
获取数据, 获取服务器返回响应数据 --> response <得到所有数据>
-
解析数据, 提取我们想要的数据内容 <得到想要的数据>
-
保存数据, 保存表格文件
代码展示
导入模块
# 导入数据请求模块 --> 第三方模块, 需要安装 pip install requests
import requests
# 导入格式化输出模块
from pprint import pprint
# 导入csv模块
import csv
创建文件
f = open('烤肉.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
'店名',
'评分',
'评论',
'店铺类型',
'商圈',
'人均',
'最低消费',
'经度',
'纬度',
'详情页',
])
csv_writer.writeheader()
“”"
1. 发送请求
模拟浏览器对url地址发送请求 <为了得到数据>
<Response [403]>
403 状态码 没有访问权限 一定要加防盗链
模拟浏览器 为了防止被反爬
cookies host referer UA
“”"
请求链接
url = 'https://*****/group/v4/poi/pcsearch/70?uuid=1191c166b23545adaef7.1679637144.1.0.0&userid=266252179&limit=32&offset=32&cateId=-1&q=%E7%83%A4%E8%82%89&token=AgEcI8MGJ-mKhr9oT4VY_zjPV_oFYDXfbo9sEAaWhz5Ud0ZxeKhBNbm--AOvOEMZfMX1X8atA5u22QAAAABsFwAA631DsS1KNwy05foi_83hOjAmFHyzNkrbtWhFRpR9MOAObuDNmNMpKOe8SdRaRJ_n'
伪装模拟 --> 请求头
headers = {
# Referer 防盗链, 告诉服务器请求链接, 是从哪里跳转过来
'Referer': 'https://*****/',
# User-Agent 用户代理 表示浏览器基本身份信息
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
发送请求
response = requests.get(url=url, headers=headers)
# <Response [403]>
print(response)
“”"
2. 获取数据
获取服务器返回响应数据 --> response <得到所有数据>
response.json() 获取响应json字典数据
3. 解析数据
提取我们想要的数据内容 <得到想要的数据>
字典取值 get
键值对取值 --> 根据冒号左边的内容[键], 提取冒号右边的内容[值]
Json字典数据, 一层一层提取
print(index)
--> json数据, 呈现一行
pprint(index)
--> json数据, 呈现多行 展开效果
“”"
for循环遍历, 把列表里面元素一个一个提取出来
for index in response.json()['data']['searchResult']:
详情页链接:
link = f'https://*****/meishi/{index["id"]}/'
创建字典 --> 方便后续保存数据
dit = {
'店名': index['title'],
'评分': index['avgscore'],
'评论': index['comments'],
'店铺类型': index['backCateName'],
'商圈': index['areaname'],
'人均': index['avgprice'],
'最低消费': index['lowestprice'],
'经度': index['longitude'],
'纬度': index['latitude'],
'详情页': link,
}
csv_writer.writerow(dit)
print(dit)
尾语 💝
好了,今天的分享就差不多到这里了!
完整代码、更多资源、疑惑解答直接点击下方名片自取即可。
对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง
喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!