admin管理员组文章数量:1531482
目标网站:https://v.qq/
需要获取的数据:某部电影的评论数据,实现自动加载。
首先可以发现腾讯视频中某个视频的评论,在下面的图片中,如果点击”查看更多评论”,网页地址并无变化,与上面提到的糗事百科中的页码变化不同。而且通过查看源代码,只能看到部分评论。即评论信息是动态加载的,那么该如何爬取多页的评论数据信息?
第一步,分析腾讯视频评论网址变化规律。点击”查看更多评论”,同时打开Fiddler,第一条信息的TextView中,TextView中可以看到对应的content内容是unicode编码,刚好对应的是某条评论的内容。
解码出来可以看到对应评论内容。
将第一条信息的网址复制出来进行分析,观察其中的规律。下图是两个紧连着的不同评论的url地址,如下图,可以发现只有cursor字段发生变化,只要得到cursor,那么评论的地址就可以轻松获得。如何找到cursor值?
第二步,查找网址中变化的cursor字段值。从上面的第一条评论信息里寻找,发现恰好在last字段值与后一条评论的cursor值相同。即表示cursor的值是迭代方式生成的,每条评论的cursor信息在其上一条评论的数据包中寻找即可。
第三步,完整代码
a.腾讯视频评论爬虫:获取”深度解读”评论内容(单页评论爬虫)
#单页评论爬虫
#想要学习Python?Python学习交流群:984632579满足你的需求,资料都已经上传群文件,可以自行下载!
import urllib.request
import re
#https://video.coral.qq/filmreviewr/c/upcomment/[视频id]?commentid=[评论id]&reqnum=[每次提取的评论的个数]
#视频id
vid="j6cgzhtkuonf6te"
#评论id
cid="6233603654052033588"
num="20"
#构造当前评论网址
url="https://video.coral.qq/filmreviewr/c/upcomment/"+vid+"?commentid="+cid+"&reqnum="+num
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0",
"Content-Type":"application/javascript",
}
opener=urllib.request.build_opener()
headall=[]
for key,value in headers.items():
item=(key,value)
headall.append(item)
opener.addheaders=headall
urllib.request.install_opener(opener)
#爬取当前评论页面
data=urllib.request.urlopen(url).read().decode("utf-8")
titlepat='"title":"(.*?)"'
commentpat='"content":"(.*?)"'
titleall=repile(titlepat,re.S).findall(data)
commentall=repile(commentpat,re.S).findall(data)
for i in range(0,len(titleall)):
try:
print("评论标题是:"+eval('u"'+titleall[i]+'"'))
print("评论内容是:"+eval('u"'+commentall[i]+'"'))
print("------")
except Exception as err:
print(err)
b.腾讯视频评论爬虫:获取”深度解读”评论内容(自动切换下一页评论的爬虫)
#自动切换下一页评论的爬虫
#想要学习Python?Python学习交流群:984632579满足你的需求,资料都已经上传群文件,可以自行下载!
import urllib.request
import re
#https://video.coral.qq/filmreviewr/c/upcomment/[视频id]?commentid=[评论id]&reqnum=[每次提取的评论的个数]
vid="j6cgzhtkuonf6te"
cid="6233603654052033588"
num="3"
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0",
"Content-Type":"application/javascript",
}
opener=urllib.request.build_opener()
headall=[]
for key,value in headers.items():
item=(key,value)
headall.append(item)
opener.addheaders=headall
urllib.request.install_opener(opener)
#for循环,多个页面切换
for j in range(0,100):
#爬取当前评论页面
print("第"+str(j)+"页")
#构造当前评论网址thisurl="https://video.coral.qq/filmreviewr/c/upcomment/"+vid+"?commentid="+cid+
"&reqnum="+num
data=urllib.request.urlopen(thisurl).read().decode("utf-8")
titlepat='"title":"(.*?)","abstract":"'
commentpat='"content":"(.*?)"'
titleall=repile(titlepat,re.S).findall(data)
commentall=repile(commentpat,re.S).findall(data)
lastpat='"last":"(.*?)"'
#获取last值,赋值给cid,进行评论id切换
cid=repile(lastpat,re.S).findall(data)[0]
for i in range(0,len(titleall)):
try:
print("评论标题是:"+eval('u"'+titleall[i]+'"'))
print("评论内容是:"+eval('u"'+commentall[i]+'"'))
print("------")
except Exception as err:
print(err)
版权声明:本文标题:Python爬取腾讯视频评论 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1726539884a1074620.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论