-
我是想抓取B站UP主的合集(新旧合集都试过了, # 如果是新合集
cs = channel_series.ChannelSeries(
uid=user_id,
type_=channel_series.ChannelSeriesType.SEASON,
id_=sid
) 相关报错如下 ...
File "example.py", line ..., in bilibili_channel_series_extraction
cs = channel_series.ChannelSeries(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "...\venv\Lib\site-packages\bilibili_api\channel_series.py", line 90, in __init__
resp = json.loads(httpx.get(api["url"], params=params).text)["data"]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
KeyError: 'data' 下面这部分是我个人问题,剪裁网址剪得不对,库本身没问题 aids = [123456789, ...] # 如果ChannelSeries初始化成功,并且通过get_videos()拿到了所有aid(s)
v = video.Video(aid=aids[0])
pages = await v.get_pages()
Traceback (most recent call last):
...
File "example.py", line ..., in bilibili_extraction
pages = await v.get_pages()
^^^^^^^^^^^^^^^^^^^
File "...\venv\Lib\site-packages\bilibili_api\video.py", line 289, in get_pages
return await request("GET", url, params=params, credential=self.credential)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "...\venv\Lib\site-packages\bilibili_api\utils\network_httpx.py", line 530, in request
raise ResponseCodeException(code, msg, resp_data)
bilibili_api.exceptions.ResponseCodeException.ResponseCodeException: 接口返回错误代码:-400,信息:请求错误。
{'code': -400, 'message': '请求错误', 'ttl': 1} 有时候可以,有时候不行,代码还没有变,令我非常困惑。而且这个和Credential有任何关系吗?因为我在测试中没有credential也可以抓到。我目前使用的例子为 任何建议和解答都欢迎!十分感谢! |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 7 replies
-
这个我周末看看,需要测试 |
Beta Was this translation helpful? Give feedback.
-
补充一些信息,希望有所帮助。根据现在
|
Beta Was this translation helpful? Give feedback.
-
哦?我似乎发现了问题所在,我们似乎需要给ChannelSeries初始化里api请求加一个ua的请求头 比如这样 headers={"User-Agent": "Mozilla/5.0"}
resp = json.loads(httpx.get(api["url"], headers=headers, params=params).text)['data'] 加了之后,我跑了一下,发现不会再出现上述的非正常返回(被服务器拒绝)的情况。但我只跑了50次(无报错),我怕B站给我风控了哈哈哈。但比之前那种50%/50%的情况好多了。如果你可以测试一下证实的话最好了,如果需要我PR的话我也可以顺手弄了。 至于为什么不加ua他会一会儿好一会儿不好,我也不是很清楚,我不知道这是不是和B站服务器端的缓存有任何关系导致的,如果你知道这个就更好了!感谢 |
Beta Was this translation helpful? Give feedback.
哦?我似乎发现了问题所在,我们似乎需要给ChannelSeries初始化里api请求加一个ua的请求头
bilibili-api/bilibili_api/channel_series.py
Line 90 in 11c33b1
比如这样
加了之后,我跑了一下,发现不会再出现上述的非正常返回(被服务器拒绝)的情况。但我只跑了50次(无报错),我怕B站给我风控了哈哈哈。但比之前那种50%/50%的情况好多了。如果你可以测试一下证实的话最好了,如果需要我PR的话我也可以顺手弄了。
至于为什么不加ua他会一会儿好一会儿不好,我也不是很清楚,我不知道这是不是和B站服务器端的缓存有任何关系导致的,如果你知道这个就更好了!感谢