标题:萌新遇到难题,求大佬帮解,实在不知道哪里越界了
只看楼主
方云
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-7-7
结帖率:100%
已结贴  问题点数:20 回复次数:9 
萌新遇到难题,求大佬帮解,实在不知道哪里越界了

就这个,我主要是想用爬虫urllib去试手将QQ视频的评论全爬下来
结果

萌新想知道到底是越界了还是别的原因,是不是因为这个评论超长已经超出限度了
不知道有没有大佬愿意给我点解决方案
下面是我要爬的第一个页面的网页源代码

请问大佬是不是这代码真长的离谱
搜索更多相关主题的帖子: 源代码 越界 难题 页面 网页 
2019-09-14 20:18
方云
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-7-7
得分:0 
这是代码

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编辑过]

2019-09-14 20:23
方云
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-7-7
得分:0 
%20应该是+,实在不知道怎么变了,呜呜
2019-09-14 20:30
fall_bernana
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:17
帖 子:240
专家分:2086
注 册:2019-8-16
得分:7 
回复 3楼 方云
    cid=(lastpat,re.S).findall(data)[0]
IndexError: list index out of range
是由于findall返回的数组为空.你直接使用[0],就会报错这个索引超出了list index的范围
2019-09-16 10:09
陈精的梅先生
Rank: 2
等 级:新手上路
威 望:3
帖 子:2
专家分:7
注 册:2019-9-16
得分:7 
(lastpat,re.S).findall(data)的返回值是否为空就好了,或者直接try一下跳过
2019-09-16 16:59
方云
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-7-7
得分:0 
回复 5楼 陈精的梅先生
try不行的。我之前改过,就是警告消失了,超过范围仍然还在

2019-09-16 18:47
方云
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-7-7
得分:0 
回复 4楼 fall_bernana
谢谢,可是解决了还是没办法爬下来,心好累
2019-09-16 18:50
fall_bernana
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:17
帖 子:240
专家分:2086
注 册:2019-8-16
得分:0 
回复 7楼 方云
你得给出你抓取的第一页的地址或者是页面内容.
你光给出你不能抓取的页面地址.怎么帮你.....
2019-09-17 10:25
方云
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-7-7
得分:0 
回复 8楼 fall_bernana
https://video.coral.
第一页地址,目的是爬取里面编码隐藏的评论,解码用u‘。。’,就这样一页一页爬
第二页地址
https://video.coral.
content 与title是标题和内容
abstract后影藏内容
last:后是爬下一页评论地址的关键代码
2019-09-17 23:02
fall_bernana
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:17
帖 子:240
专家分:2086
注 册:2019-8-16
得分:0 
以下是引用方云在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解析就可以了.不用做匹配.其他的你自己简单弄吧.
2019-09-19 10:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-496823-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.209277 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved