看看都有谁出言不逊了
爬取评论
首选看看评论的加载过程。
评论加载过程
用浏览器打开网页,F12快捷键调试模式,选择Network,最后当然要刷新以下F5,鼠标随意。然后就是见证奇迹的时刻,O(∩_∩)O
- 复制一定数量的评论文本搜索以下
- 点击搜索结果在右边框中选择review就会看到满满的json格式信息(当然得去掉多余的信息)。
- 查看网络请求的方式,链接和头信息。
头信息为
以上我们找到了请求方式,请求链接,以及头信息,接下来,我们要分析更多的请求链接,研究以下请求链接的生成规律。
请求链接生成规律
- 图片上方为第二个链接的返回结果,其最后的rootCommentId与第三个链接中的last_id数值一样
- 链接最后jsonp后一堆数字与unit时间戳很像,转换以下,就会发现这就是我们发送请求的时间
- 最后面的几个数字我始终不知道干啥的,我用了最简单粗暴的方法代替——随机数
代码奉上:
# 导入必要的包
import requests
import datetime
import re
def getCritical(last_id = None):
'''
请求爱奇艺评论接口,返回response信息
参数 last_id: 用与生成请求链接
:return: response信息
'''
# 链接的开始,就是前面一大堆不变的字母数字。
urlbegin = 'https://sns-comment.iqiyi.com/v3/comment/get_comments.action?agent_type=118&agent_version=9.11.5&authcookie=null&business_type=17&content_id=15068699100&hot_size=0&last_id='
# 链接的结束,由于last_id还不清楚,先不加上,最后是当前的unit时间戳与随机数
urlend = '&page=&page_size=20&types=time&callback=jsonp_'+str(int(datetime.datetime.now().timestamp()*1000))+str(np.random.randint(1,1000000)) # 时间戳和最后的随机数
# 当last_id 不指定时,为我们第一次请求直接将第一次的内容复制进来就好,当指定了last_id这时候就需要
# 另外设置请求地址值
if last_id == None:
url = 'https://sns-comment.iqiyi.com/v3/comment/get_comments.action?agent_type=118&agent_version=9.11.5&authcookie=null\
&business_type=17&content_id=15068699100&hot_size=10&last_id=&page=&page_size=10&types=hot,time&callback=jsonp_'\
+str(</