python自动抓取腾讯视频评论

两天时间的努力,终于可以爬取多页评论了。
找规律很复杂。
代码如下:(初稿2018.9.17)
(有很多不好的地方,慢慢会修改)

import urllib.request
import re
import urllib.parse
#视频编号(自己修改)
vid=3097941562
def select(page,last):
    url='https://video.coral.qq.com/varticle/'+str(vid)+'/comment/v2?callback=_varticle'+str(vid)+'commentv2&orinum=10&oriorder=o&pageflag=1&cursor='+str(last)+'&scorecursor=0&orirepnum=2&reporder=o&reppageflag=1&source=9&_='+str(page)
    heads=[("Accept","*/*"),
           ("Accept-Encoding","gzip, deflate, br"),
           ("Accept-Language","zh-CN,zh;q=0.9"),
           ("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36")]
    data=urllib.request.urlopen(url).read().decode("utf-8")
    data=str(data)
    idpat='&nick=(.*?)&'
    conpat='"parent":"0".*?"content":"(.*?)",'
    pat = '"last":"(.*?)"'
    idlist=re.compile(idpat,re.S).findall(data)
    conlist=re.compile(conpat,re.S).findall(data)
    firs = re.compile(pat, re.S).findall(data)
    #定义first为全局变量
    global first
    first = firs[0]
    for i in range(0,10):
        try:
            id=eval('u"'+idlist[i]+'"')
            con=eval('u"'+ conlist[i] +'"')
            id=urllib.parse.unquote(id)
            print(id)
            print(con)
        except UnicodeEncodeError as e:
            print('-------------含字符')
        except IndexError as e :
            print('---*****少一个')

url='https://video.coral.qq.com/article/'+str(vid)+'/commentnum?callback=_article'+str(vid)
heads=[("Accept","*/*"),
       ("Accept-Encoding","gzip, deflate, br"),
       ("Accept-Language","zh-CN,zh;q=0.9"),
       ("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36")]
pdata=urllib.request.urlopen(url).read().decode("utf-8")
pdata=str(pdata)
pagepat='"time":(.*?)}'
page=re.compile(pagepat,re.S).findall(pdata)
page=int(page[0])
first =0
for i in range (0,5):
    select(page, first)
    page+=1
    print('------------------------')
    i+=1
    print('第'+str(i)+'页')

几点需注意:
局部变量与全局变量的使用。
正确使用正则表达式。
模拟浏览器登入。
找准关键参数。
不足:
url太长,有待修改。
表情的解码,有待学习。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值