使用DrissionPage模块爬取京东商品的评论

传统爬虫技术(分治模式)

Requests + BeautifulSoup(lxml): 这是一个“分离式”组合。Requests 库只负责发送 HTTP 请求、获取网络响应(HTML/JSON)。BeautifulSoup 或 lxml 则负责对获取到的 HTML 源码进行解析、提取数据。它无法直接执行 JavaScript。

Selenium: 这是一个浏览器自动化工具。它通过驱动一个真实的浏览器(如 Chrome、Firefox)来加载网页,可以完整地执行 JavaScript 并渲染出最终页面。然后通过其提供的方法来定位元素、获取数据。

DrissionPage(融合模式)

DrissionPage 是一个较新的 Python 库,它的设计理念是“融合”。它将浏览器自动化(如 Selenium 的功能)和网络请求(如 Requests 的功能)整合在同一个对象中。你可以根据场景,在同一个页面对象上无缝切换这两种模式,取长补短。

首先要登录京东账号,只爬取前十页数据,这王一博还挺帅。

image

具体代码:

点击查看代码

# 导入自动化模块
import time

from DrissionPage import ChromiumPage
from DrissionPage.common import Actions
# 打开浏览器
dp = ChromiumPage()

#实例化动作链对象
ac=Actions(dp)

# 访问网站
dp.get('https://item.jd.com/10087782648613.html')

# 等待页面加载
time.sleep(3)

# 监听数据
dp.listen.start('client.action')

# 点击加载全部评论
dp.ele('css:.all-btn .arrow').click()

#构建循环
for page in range(1,11):
    print(f'正在采集第{page}页的数据')

    # 等待数据包加载
    r = dp.listen.wait()

    # 获取响应数据
    json_data = r.response.body
    # print(json_data)
    # 解析数据......
    # 字典取值,提取评论信息所在列表
    comment_list = json_data['result']['floors'][2]['data']  # 修正了引号错误
    # print(comment_list)

    # for循环遍历,提取列表里面的元素
    # for循环遍历,提取列表里面的元素
    for index in comment_list:
        """提取具体每条评论信息"""

        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'],
            }
            print(dit)
        else:
               pass

    #定位窗口标签
    tab = dp.ele('css:div._rateListContainer_1ygkr_45')

    #下滑
    # ac.scroll(delta_y=2000,on_ele=tab)
    tab.scroll.to_bottom()


posted @ 2025-10-25 10:03  雨花阁  阅读(29)  评论(0)    收藏  举报