weiboSpider icon indicating copy to clipboard operation
weiboSpider copied to clipboard

爬取图片视频时报错

Open Minamototennsai opened this issue 6 months ago • 5 comments

为了更好的解决问题,请认真回答下面的问题。等到问题解决,请及时关闭本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'

Minamototennsai avatar Jun 20 '25 14:06 Minamototennsai

我将wb_info打印出来的内容为{'ok': 0, 'errno': '100007', 'msg': '不符合的请求方式', 'extra': None}

Minamototennsai avatar Jun 20 '25 14:06 Minamototennsai

感谢反馈,修改下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修改图片下载的代码,应该可以解决图片下载的问题,视频不确定。

dataabc avatar Jun 20 '25 14:06 dataabc

图片已经能正常爬取了,但是视频在爬取一定次数后仍然会报这个错,并且wb_info的请求状态为403,这是不是被限流了?

Minamototennsai avatar Jun 20 '25 15:06 Minamototennsai

我现在没办法调试,不确定。

dataabc avatar Jun 20 '25 16:06 dataabc

same

poptree avatar Jun 22 '25 09:06 poptree