使用DrissionPage模块进行爬取,DrissionPage是一个自动化的模块,可以模拟人的操作,进行翻页等操作,比传统爬取更加方便
在使用DrissionPage之前,需要先初始化路径运行下面的代码,需要将r'D:\Chrome\Chrome.exe' 替换为本地Chrome的执行路径,如果没有Chrome浏览器,也可以切换其他浏览器
from DrissionPage import ChromiumOptionspath = r'D:\Chrome\Chrome.exe' # 请改为你电脑内Chrome可执行文件路径
ChromiumOptions().set_browser_path(path).save()
通过开发者工具找到评论数据对应的请求网址,全部评价,定位页面等

具体代码
# 导入自动化模块
import time
from DrissionPage import ChromiumPage
# 导入csv
import csv# 创建文件对象
f = open('data.csv',mode='w',encoding='utf-8',newline='')
# 字典写入方法
csv_writer = csv.DictWriter(f,fieldnames=['昵称','用户等级','评分','评论','时间','产品',
])
# 写入表头
csv_writer.writeheader()
# 打开浏览器(实例化浏览器对象)
dp = ChromiumPage()# 访问网站
dp.get('https://item.jd.com/10058384218794.html')
# 等待页面加载
time.sleep(3)
# 监听数据包
dp.listen.start('client.action')
# 点击全部评价
dp.ele('css:.all-btn').click()
# 构建循环翻页
for page in range(1,201):print(f'正在采集第{page}页的数据')# 等待数据包加载r = dp.listen.wait()# 获取数据内容json_data = r.response.body# 键值对取值,提取评论所在列表datas = json_data['result']['floors'][2]['data']# for循环提取列表元素for index in datas:try:dit = {'昵称':index['commentInfo']['userNickName'],'用户等级': index['commentInfo']['officerLevel'],'评分': index['commentInfo']['commentScore'],'评论': index['commentInfo']['commentData'],'时间': index['commentInfo']['commentDate'],'产品': index['commentInfo']['wareAttribute'][0]['颜色'],}# 写入数据csv_writer.writerow(dit)print(dit)except:pass# 定位页面tab = dp.ele('css:._rateListContainer_1ygkr_45')# 下滑tab.scroll.to_bottom()
运行代码即可爬取出评论,并输出为.csv文件
