爬取图片视频时报错
为了更好的解决问题,请认真回答下面的问题。等到问题解决,请及时关闭本issue。
- 问:请您指明哪个版本运行出错(github版/PyPi版/全部)?
答:github
- 问:您使用的是否是最新的程序(是/否)?
答:是
- 问:爬取任意用户都会运行出错吗(是/否)?
答:是
- 问:若只有爬特定微博时才出错,能否提供出错微博的weibo_id或url(非必填)?
答:
- 问:若您已提供出错微博的weibo_id或url,可忽略此内容,否则能否提供出错账号的user_id及您配置的since_date,方便我们定位出错微博(非必填)?
答:
- 问:如果方便,请您描述出错详情,最好附上错误提示。
答:爬取图片视频时出错,只能获得非常少量的结果,爬取每条微博时都会报错: 'data' Traceback (most recent call last): File "E:\weiboSpider\weibo_spider\parser\page_parser.py", line 305, in get_video_url video_url = to_video_download_url(self.cookie, video_page_url) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\weiboSpider\weibo_spider\parser\util.py", line 101, in to_video_download_url video_url = wb_info['data']['object']['stream'].get('hd_url') ~~~~~~~^^^^^^^^ KeyError: 'data'
我将wb_info打印出来的内容为{'ok': 0, 'errno': '100007', 'msg': '不符合的请求方式', 'extra': None}
感谢反馈,修改下util.py的to_video_download,应该可以获取到图片视频的url,
def to_video_download_url(cookie, video_page_url):
if video_page_url == '':
return ''
video_object_url = video_page_url.replace('m.weibo.cn/s/video/show',
'm.weibo.cn/s/video/object')
try:
user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 Edg/136.0.0.0'
headers = {'User-Agent': user_agent, 'Cookie': cookie}
wb_info = requests.get(video_object_url, headers=headers).json()
video_url = wb_info['data']['object']['stream'].get('hd_url')
if not video_url:
video_url = wb_info['data']['object']['stream']['url']
if not video_url: # 说明该视频为直播
video_url = ''
except json.decoder.JSONDecodeError:
logger.warning(u'当前账号没有浏览该视频的权限')
return video_url
查看https://github.com/dataabc/weibo-search/issues/473修改图片下载的代码,应该可以解决图片下载的问题,视频不确定。
图片已经能正常爬取了,但是视频在爬取一定次数后仍然会报这个错,并且wb_info的请求状态为403,这是不是被限流了?
我现在没办法调试,不确定。
same