python爬取多页商品评论详解

python爬取多页商品评论

目的:练手爬虫爬取商品评论,一是因为示例代码有问题正好重写功能,二是回顾一下发现这是python爬虫学习中很经典的一个场景,顺便把全流程记录下来供大家参考学习

目标界面
image-20220722211729763

开发者工具找到评论所在界面代码中位置

image-20220722204536578

但是查询发现经网页渲染后代码中不存在评论(顺便省的selenium再爬一遍)

image-20220722204627578

那就得找找网页藏哪去了

继续在网络传输中找请求资源内容

image-20220722205039812

小黑子,终于露出鸡脚了!

这里的反爬措施是用.action文件传输json对象数据报文从而避免源码中包含数据

找到其.action网址

image-20220722205245648

剩下就是数据清洗筛选和一些逻辑处理了

本身.action传输的都是明文数据,效率起见,这里直接是拿requests来爬取,结果数据都没拿到

image-20220722210129538

可能是某种接口反爬

换selenium试试

image-20220722210539048

运行正常

稍微实验一下显然可得是靠最后的fold参数决定接口文件界面

image-20220722210732502

完整爬取n页代码如下

from selenium import webdriver
import re
url = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100000177770&score=0&sortType=5&pageSize=10&isShadowSku=0&fold=1&page='
rs_all = ''   #所有爬取界面源码整合
for i in range(8):   
    print("正在无界面循环爬取第 %d 页,请等待"%i)
    c_o = webdriver.ChromeOptions()
    c_o.add_argument('--headless')
    browser = webdriver.Chrome(options=c_o)  #无界面爬取ChromeOptions选项设置
    browser.get(url+str(i)) 
    data = browser.page_source  #获取每页源码并赋值
    rs_all += data   #n页叠加

print("9页资源已爬取完毕,开始正则提取有效数据")
import time
time.sleep(4)

p_ct = '"content":"(.*?)"'   #非贪婪匹配的正则表达提取评论
ct = re.findall(p_ct, rs_all)

for i in range(len(ct)):   #提取后以分点形式输出
    ct[i] = ct[i].replace(r'\n', '')
    print(str(i+1)+ '.'+ ct[i])


运行正常

image-20220731230326501

image-20220722211045752
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值