注册 登录
编程论坛 Python论坛

萌新遇到难题,求大佬帮解,实在不知道哪里越界了

方云 发布于 2019-09-14 20:18, 2283 次点击
只有本站会员才能查看附件,请 登录

就这个,我主要是想用爬虫urllib去试手将QQ视频的评论全爬下来
结果
只有本站会员才能查看附件,请 登录

萌新想知道到底是越界了还是别的原因,是不是因为这个评论超长已经超出限度了
不知道有没有大佬愿意给我点解决方案
下面是我要爬的第一个页面的网页源代码
只有本站会员才能查看附件,请 登录

请问大佬是不是这代码真长的离谱
9 回复
#2
方云2019-09-14 20:23
这是代码

import urllib.request
import re


vid="vbb35hm6m6da1wc"
cid=""

headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
         "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 j in range(0,100):
    #爬去当前页面
    print("第"+str(j)+"页")
    thisurl='https://video.coral.'
    data=urllib.request.urlopen(thisurl).read().decode("utf-8")
    titlepat='"title":"(.*?)","abstract":"(.*?)"'
    commentpat='"content":"(.*?)"'
    titleall=(titlepat,re.S).findall(data)
    commentall=(commentpat,re.S).findall(data)
    lastpat='"last":"(.*?)"'   
    cid=(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)
 


[此贴子已经被作者于2019-9-14 20:29编辑过]

#3
方云2019-09-14 20:30
%20应该是+,实在不知道怎么变了,呜呜
#4
fall_bernana2019-09-16 10:09
回复 3楼 方云
    cid=(lastpat,re.S).findall(data)[0]
IndexError: list index out of range
是由于findall返回的数组为空.你直接使用[0],就会报错这个索引超出了list index的范围
#5
陈精的梅先生2019-09-16 16:59
(lastpat,re.S).findall(data)的返回值是否为空就好了,或者直接try一下跳过
#6
方云2019-09-16 18:47
回复 5楼 陈精的梅先生
try不行的。我之前改过,就是警告消失了,超过范围仍然还在
只有本站会员才能查看附件,请 登录

#7
方云2019-09-16 18:50
回复 4楼 fall_bernana
谢谢,可是解决了还是没办法爬下来,心好累
#8
fall_bernana2019-09-17 10:25
回复 7楼 方云
你得给出你抓取的第一页的地址或者是页面内容.
你光给出你不能抓取的页面地址.怎么帮你.....
#9
方云2019-09-17 23:02
回复 8楼 fall_bernana
https://video.coral.
第一页地址,目的是爬取里面编码隐藏的评论,解码用u‘。。’,就这样一页一页爬
第二页地址
https://video.coral.
content 与title是标题和内容
abstract后影藏内容
last:后是爬下一页评论地址的关键代码
#10
fall_bernana2019-09-19 10:11
以下是引用方云在2019-9-17 23:02:20的发言:

https://video.coral.
第一页地址,目的是爬取里面编码隐藏的评论,解码用u‘。。’,就这样一页一页爬
第二页地址
https://video.coral.
content 与title是标题和内容
abstract后影藏内容
last:后是爬下一页评论地址的关键代码


我说的第一页是获取https://video.coral.这个地址的页面.你这个页只是个接口信息返回链接.
从这个接口返回来分析.
data: {
targetid: 2752589461,
display: 1,#显示的哪一页
total: 351,#一共有多少页
reqnum: 4,#要求返回的个数
retnum: 4,#返回的个数
maxid: "6579997611226529188",
first: "6570180611097294375",
last: "6564789223064523475",
hasnext: true,#是否还有下一页

分析猜测url的参数source是起始页码,reqnum是一页返回多少个.返回的是个jsonp格式的数据.你用json解析就可以了.不用做匹配.其他的你自己简单弄吧.
1