Python自学笔记5——腾讯视频评论爬取

# -*- coding: utf-8 -*-

"""

Created on Wed Dec 27 16:31:28 2017

@author: Andrew

"""

#######爬取腾讯视频中《九州天空城》视频评论

import urllib.request

import http.cookiejar

import re

#设置视频编号

#设置评论起始编号

comid="6351776727144512306"#从源代码中获取

headers={"Accept":"text/html,application/xthtml+xml,application/xml;q=0.9,*/*;q=0.8",

"Accept-Language":"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",

"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36",

"Connection":"keep-alive",

#设置cookie

cjar=http.cookiejar.CookieJar()

#设置头信息

headall=[]

for key,value in headers.items():

item=(key,value)

headall.append(item)

opener.addheaders=headall

#将opener安装为全局

#建立一个自定义函数craw(vid,comid),实现自动爬取对应评论网页并返回爬取数据

def craw(vid,comid):

url="http://coral.qq.com/article/"+vid+"/comment/v2?callback=jQuery112402604990007163235_1514424106408&orinum=10&oriorder=t&pageflag=1&cursor="+comid+"&scorecursor=0&orirepnum=2&reporder=o&reppageflag=1&source=1"

return data

idpat='"id":"(.*?)"'

userpat='{"userid":"(.*?)","nick":"(.*?)"'

contpat='"userid":"(.*?)","content":"(.*?)",'

#第一层循环,代表爬取多少页,每一次外层循环爬取一页

for i in range(1,3):

print("===============================================================")

print("第"+str(i)+"页评论内容")

data=craw(vid,comid)

#第二层循环,根据爬取的结果提取并处理每条评论的信息,一页10条评论

idlist=re.compile(idpat,re.S).findall(data)

userlist=re.compile(userpat,re.S).findall(data)

contlist=re.compile(contpat,re.S).findall(data)

for i in range(0,min(len(idlist),len(userlist),len(contlist))):

for j in range(0,min(len(idlist),len(userlist),len(contlist))):

if userlist[i][0]==contlist[j][0]:

print("用户名:"+eval('u"'+userlist[i][1]+'"'))

print("内容是:"+eval('u"'+contlist[j][1]+'"'))

print("------------------------------------------")

#将comid改变为该页的最后一条评论id,实现不断自动加载

comid=idlist[9]

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171228G0BXU600?refer=cp_1026

扫码关注云+社区