bilibili-api
bilibili-api copied to clipboard
【漏洞】{抓取弹幕时使用get_danmakus出错}
Python 版本: 3.8
模块版本: 9.1.0
运行环境: Windows10
模块路径: bilibili_api.video
报错信息:
Traceback (most recent call last):
File "getdanmakus.py", line 5, in <module>
dms = sync(v.get_danmakus(0))
File "D:\DevApp\Anaconda3\lib\site-packages\bilibili_api\utils\sync.py", line 24, in sync
return loop.run_until_complete(coroutine)
File "D:\DevApp\Anaconda3\lib\asyncio\base_events.py", line 616, in run_until_complete
return future.result()
File "D:\DevApp\Anaconda3\lib\site-packages\bilibili_api\video.py", line 555, in get_danmakus
view = await self.get_danmaku_view(cid=cid)
File "D:\DevApp\Anaconda3\lib\site-packages\bilibili_api\video.py", line 509, in get_danmaku_view
read_command_danmakus(reader.bytes_string()))
File "D:\DevApp\Anaconda3\lib\site-packages\bilibili_api\video.py", line 427, in read_command_danmakus
data['extra'] = json.loads(reader_.string())
File "D:\DevApp\Anaconda3\lib\json\__init__.py", line 357, in loads
return _default_decoder.decode(s)
File "D:\DevApp\Anaconda3\lib\json\decoder.py", line 340, in decode
raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 1 column 3 (char 2)
报错代码:
from bilibili_api import video, sync
v = video.Video(bvid='BV1AV411x7Gs')
dms = sync(v.get_danmakus(0))
for dm in dms:
print(dm)
我感觉是获取到的视频在解析过程中传递给json的参数有问题,就打印了一下,果然不对。
get_danmaku_view->read_command_danmakus:
elif t == 9:
print(reader_.string())
data['extra'] = json.loads(reader_.string())
╚Ahh
╚AHHOhttp://i0.hdslb.com/bfs/feed-admin/d831cbae67aee1a8fe1cc463f