使用DrissionPage模块爬取京东商品的评论
传统爬虫技术(分治模式)
Requests + BeautifulSoup(lxml): 这是一个“分离式”组合。Requests 库只负责发送 HTTP 请求、获取网络响应(HTML/JSON)。BeautifulSoup 或 lxml 则负责对获取到的 HTML 源码进行解析、提取数据。它无法直接执行 JavaScript。
Selenium: 这是一个浏览器自动化工具。它通过驱动一个真实的浏览器(如 Chrome、Firefox)来加载网页,可以完整地执行 JavaScript 并渲染出最终页面。然后通过其提供的方法来定位元素、获取数据。
DrissionPage(融合模式)
DrissionPage 是一个较新的 Python 库,它的设计理念是“融合”。它将浏览器自动化(如 Selenium 的功能)和网络请求(如 Requests 的功能)整合在同一个对象中。你可以根据场景,在同一个页面对象上无缝切换这两种模式,取长补短。
首先要登录京东账号,只爬取前十页数据,这王一博还挺帅。

具体代码:
点击查看代码
# 导入自动化模块
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()
浙公网安备 33010602011771号