把爬评论的代码写出来了
# 导入自动化模块
from DrissionPage import ChromiumPage
# 导入自动化模块,动作链方法
from DrissionPage.common import Actions
# 导入时间模块
import time
# 导入csv模块
import csv
# 创建文件对象(关键修改:encoding='utf-8' 改为 encoding='utf-8-sig')
f = open('data3.csv', mode='w', encoding='utf-8-sig', newline='')
# 字典写入方法
csv_writer = csv.DictWriter(f, fieldnames=[
'昵称',
'评分',
'产品',
'日期',
'评论',
])
# 写入表头
csv_writer.writeheader()
# 打开浏览器
dp = ChromiumPage()
# 实例化动作链对象
ac = Actions(dp)
# 访问网站
dp.get('https://item.jd.com/10155061984649.html')
# 设置延时
time.sleep(2)
# 监听数据
dp.listen.start('client.action')
# 点击加载全部评论
dp.ele('css:.all-btn .arrow').click()
# 构建循环
for page in range(1, 3000):
print(f'正在采集第{page}页的数据内容')
# 等待数据包加载
r = dp.listen.wait()
# 获取响应数据 -> 字典数据
json_data = r.response.body
"""解析数据"""
# 字典取值,提取评论信息所在列表
comment_list = json_data['result']['floors'][2]['data']
# for循环遍历,提取列表里面的元素
for index in comment_list:
"""提取具体每条评论信息"""
# 判断这个 commentInfo 键是否存在
if 'commentInfo' in [i for i in index.keys()]:
dit = {
'昵称': index['commentInfo']['userNickName'],
'评分': index['commentInfo']['commentScore'],
'产品': index['commentInfo']['productSpecifications'].replace('已购',''),
'日期': index['commentInfo']['commentDate'],
'评论': index['commentInfo']['commentData'],
}
# 写入数据
csv_writer.writerow(dit)
print(dit)
else:
pass
# 定位窗口标签
tab = dp.ele('css:div.ReactVirtualized__Grid.ReactVirtualized__List')
# 下滑
dp.scroll.to_bottom()
浙公网安备 33010602011771号