Python爬取腾讯视频评论的思路详解

作者:画师-开言 时间:2021-05-30 23:04:43 

一、前提条件

  • 安装了Fiddler了(用于抓包分析)

  • 谷歌火狐浏览器

  • 如果是谷歌浏览器,还需要给谷歌浏览器安装一个SwitchyOmega插件,用于代理服务器

  • 有Python的编译环境,一般选择Python3.0及以上

声明:本次爬取腾讯视频里 《最美公里》纪录片的评论。本次爬取使用的浏览器是谷歌浏览器

二、分析思路

1、分析评论页面

Python爬取腾讯视频评论的思路详解

根据上图,我们可以知道:评论使用了Ajax异步刷新技术。这样就不能使用以前分析当前页面找出规律的手段了。因为展示的页面只有部分评论,还有大量的评论没有被刷新出来。

这时,我们应该想到使用抓包来分析评论页面刷新的规律。以后大部分爬虫,都会先使用抓包技术,分析出规律!

2、使用Fiddler进行抓包分析——得出评论网址规律

fiddler如何抓包,这个知识点,需要读者自行去学习,不在本博客讨论范围。

Python爬取腾讯视频评论的思路详解
Python爬取腾讯视频评论的思路详解

把上面两张图里面的内容对比一下,可以知道这个JS就是评论存放页面。(这需要大家一个一个找,一般Ajax都是在JS里面,所以这也找JS进行对比即可)

我们复制这个JS的url:右击 > copy > Just Url

大家可以重复操作几次,多找几个JS的url,从url得出规律。下图是我刷新了4次得到的JS的url:

Python爬取腾讯视频评论的思路详解

根据上图,我们发现url不同的地方有两处:一是cursor=?;二是_=?。

我们很快就能发现 _=?的规律,它是从1576567187273加1。而cursor=?的规律看不出来。这个时候找到它的规律呢?

(1)百度一下,看前人有没有爬取过类型的网站,根据他们的规律和方法,去找出规律;

(2)羊毛出在羊身上。我们需要有的大胆想法——会不会这个cursor=?可以根据上一个JS页面得到呢?这只是很多大胆想法中的一个,我们就一个想法一个想法的试试。

我们就采用第二种方法,去js里面找。复制其中一个url为:


url = https://video.coral.qq.com/varticle/3242201702/comment/v2?callback=_varticle3242201702commentv2&orinum=10&oriorder=o&pageflag=1&cursor=6460163812968870071&scorecursor=0&orirepnum=2&reporder=o&reppageflag=1&source=132&_=1576567187273

去浏览器里面打开,在里面搜索一下此url的下一个url的cursor=?的值。我们发现一个惊喜!

Python爬取腾讯视频评论的思路详解

如下:

一般情况下,我们还要多试几次,确定我们的想法是正确的。

至此,我们发现了评论的url之间的规律:

  • _=?从1576567187273加1

  • cursor=?的值存在上面一个JS中。

三、代码编写


import re
import random
import urllib.request

#构建用户代理
uapools=["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36",
 "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
 "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0",
]
#从用户代理池随机选取一个用户代理
def ua(uapools):
thisua=random.choice(uapools)
#print(thisua)
headers=("User-Agent",thisua)
opener=urllib.request.build_opener()
opener.addheaders=[headers]
#设置为全局变量
urllib.request.install_opener(opener)

#获取源码
def get_content(page,lastId):
url="https://video.coral.qq.com/varticle/3242201702/comment/v2?callback=_varticle3242201702commentv2&orinum=10&oriorder=o&pageflag=1&cursor="+lastId+"&scorecursor=0&orirepnum=2&reporder=o&reppageflag=1&source=132&_="+str(page)
html=urllib.request.urlopen(url).read().decode("utf-8","ignore")
return html

#从源码中获取评论的数据
def get_comment(html):
pat='"content":"(.*?)"'
rst = re.compile(pat,re.S).findall(html)
return rst

#从源码中获取下一轮刷新页的ID
def get_lastId(html):
pat='"last":"(.*?)"'
lastId = re.compile(pat,re.S).findall(html)[0]
return lastId

def main():
ua(uapools)
#初始页面
page=1576567187274
#初始待刷新页面ID
lastId="6460393679757345760"
for i in range(1,6):
html = get_content(page,lastId)
#获取评论数据
commentlist=get_comment(html)
print("------第"+str(i)+"轮页面评论------")
for j in range(1,len(commentlist)):
 print("第"+str(j)+"条评论:" +str(commentlist[j]))
#获取下一轮刷新页ID
lastId=get_lastId(html)
page += 1

main()

四、结果展示

Python爬取腾讯视频评论的思路详解

总结

以上所述是小编给大家介绍的Python爬取腾讯视频评论网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

来源:https://blog.csdn.net/weixin_43495473/article/details/103559812

标签:python,爬取,腾讯,视频
0
投稿

猜你喜欢

  • Python统计列表元素出现次数的方法示例

    2021-03-06 00:43:23
  • Oracle的out参数实例详解

    2024-01-17 00:34:23
  • 教你用Python+selenium搭建自动化测试环境

    2021-10-27 02:52:49
  • Python数据可视化教程之Matplotlib实现各种图表实例

    2021-08-19 01:18:10
  • 用python3教你任意Html主内容提取功能

    2022-09-08 02:27:01
  • Python 使用tf-idf算法计算文档关键字权重并生成词云的方法

    2022-03-28 13:09:18
  • Python 2/3下处理cjk编码的zip文件的方法

    2022-08-05 17:53:40
  • 深入了解MySQL的数据类型以及建库策略

    2008-12-17 16:16:00
  • 详解python中的异常捕获

    2021-11-21 00:52:20
  • python读取csv文件指定行的2种方法详解

    2022-06-06 13:35:24
  • Python脚本在Appium库上对移动应用实现自动化测试

    2021-12-27 12:43:24
  • python生成式的send()方法(详解)

    2022-09-02 23:50:56
  • 在Python中通过getattr获取对象引用的方法

    2023-08-24 23:32:33
  • numpy:np.newaxis 实现将行向量转换成列向量

    2023-07-13 03:14:39
  • MySql如何获取相邻数据

    2024-01-16 04:36:53
  • Python文件读写保存操作的示例代码

    2022-03-20 01:21:23
  • PHP 检查扩展库或函数是否可用的代码

    2023-07-22 23:34:34
  • 利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境

    2022-06-03 19:54:30
  • Python图像处理二值化方法实例汇总

    2021-04-10 21:41:33
  • Python图像处理库PIL的ImageEnhance模块使用介绍

    2023-05-14 17:29:51
  • asp之家 网络编程 m.aspxhome.com