前言
爬取时光网里的长津湖之水门桥的影视评论,时光网采用的是 XHR
技术,先加载骨架在加载详细内容,而加载详细内容的过程,就用到了 XHR 技术。
XHR
全称 XMLHttpRequest
,是浏览器内置的对象。浏览器想要在不刷新网页前提下加载、更新局部内容时,必须通过 XHR 向存放数据的服务器发送请求。
爬取
首先某网站的网站内容一般可以采用 CSS
选择器来进行爬取,由于时光网采用的是 XHR
技术,所以我们打开NetWork 面板,可以看到
如上图所示,请求的URL是 API 请求的方法是 GET,接下来就是查看请求 URL 的的参数,可以把 API 链接拆分下来,也可以点击NetWork 的 Payload 按钮进行查询字符串查询操作,如下图:
然后点击 预览按钮 获取 json 格式下对应的代码皆可如下图:
到这里基本信息都掌握了,恭喜你也可以写出以下代码了:
代码语言:javascript复制import requests
import time
from datetime import datetime
# 头部和请求
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36 Edg/98.0.1108.43',
'Referer': 'http://movie.mtime.com/'
}
# 引入 session 对象
session = requests.Session()
# 设置 headers 为全局headers
session.headers.update(headers)
# 使用for循环爬取26页的评论
for num in range(1,27):
params = {
'tt':'{}'.format(int(time.time() * 1000)), #
'movieId':'271015', # id
'pageIndex': '{}'.format(num), # 评论页数
'pageSize': '20', # 每页评论条数
'orderType': '2' # 类型 1 为热门评论,2 为最新评论
}
# 影视评论的api
res = session.get('http://front-gateway.mtime.com/library/movie/longCommentList.api',params = params)
comments = res.json()['data']['list'] # api 参数
for comment in comments: # 将参数循环
print('用户:', comment['nickname'])
print('评论:', comment['content'])
# 本身时间戳为 Unix 引入 datetime 模块 的 fromtimestamp() 方法进行转换
print('时间:', datetime.fromtimestamp(comment['commentTime']))
time.sleep(1) # 防止被屏蔽,设置1秒爬取一条评论
我的博客即将同步至腾讯云 社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3h1mgxxl8a2o0