使用DrissionPage模块进行爬取,DrissionPage是一个自动化的模块,可以模拟人的操作,进行翻页等操作,比传统爬取更加方便
在使用DrissionPage之前,需要先初始化路径运行下面的代码,需要将r'D:\Chrome\Chrome.exe' 替换为本地Chrome的执行路径,如果没有Chrome浏览器,也可以切换其他浏览器

from DrissionPage import ChromiumOptions

path = r'D:\Chrome\Chrome.exe'  # 请改为你电脑内Chrome可执行文件路径
ChromiumOptions().set_browser_path(path).save()

通过开发者工具找到评论数据对应的请求网址,全部评价,定位页面等

image

具体代码

# 导入自动化模块
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文件

image

posted on 2025-10-27 19:48  -MARIO  阅读(0)  评论(0)    收藏  举报