昨天,一个朋友在爬取酒店评论时出现了问题,用的selenium模拟浏览器的,但在点击下一页时,页面没有反应,没有跳转到下一页,我回去再弄了下,发现不是定位出的错,我打开F12时,页面跳出了pause debugger,刷新了几次还是重定向到debugger,因此可以断定正是这个无限debugger导致selenium无法点击,查看了下debugger所在的js代码,想从改变js入手,试了好多次,没有成功。这应该算对调试的反爬措施吧,后面我就果断的用requests去抓评论了。
首先,我注册了一个号,登录账号密码,拿到我的cookie,按下F12,先看All里找看下是否有相应的数据,不出所料,没有,再到XHR中寻找,XHR中包含动态加载的一些包,果然,一些评论数据都隐藏在里面,接着就是翻页的问题了,仔细检查url,不难发现其中有page这个参数,而且是变动的,所有抓取所有的评论就很容易了。
…代码如下…
import requests
import json
from urllib import parse
for x in range(1,117):
params = {
'hotelid': 10201369,
'page': x,
'pageSize': 10,
'commentType': 0,
'roomTypeId': '',
'tripPurposeId': ''