MediaCrawler
MediaCrawler copied to clipboard
运行时报错
⚠️ 提交前确认
- [x] 我已经仔细阅读了项目使用过程中的常见问题汇总
- [x] 我已经搜索并查看了已关闭的issues
- [x] 我确认这不是由于滑块验证码、Cookie过期、Cookie提取错误、平台风控等常见原因导致的问题
❓ 问题描述
相同的配置,一开始没有遇到这个问题,大致是第10次的时候出现了。随后一直都出现这个问题。 爬取关键词记录时,一开始没有问题,可以在shell中看到爬取的记录, 爬到一半,遇到这个报错,换了另一个账号登录,依然报这个错误。应该可以排除平台风控吧。 换用抖音的时候也没有遇到这个问题 现在没有继续排查问题的头绪。
🔍 使用场景
- 目标平台: (如:小红书/抖音/微博等) 小红书
- 使用功能: (如:关键词搜索/用户主页爬取等) 关键词搜索
💻 环境信息
- 操作系统: windows 11
- Python版本: 3.9.6
- 是否使用IP代理: 否
- 是否使用VPN翻墙软件:否
- 目标平台(抖音/小红书/微博等): 小红书
📋 错误日志
2025-05-16 15:22:40 MediaCrawler INFO (core.py:366) - [XiaoHongShuCrawler.get_comments] Begin get note id comments 6731e4bb000000003c01d86b
Traceback (most recent call last):
File "D:\workspace\crawler\MediaCrawler-main\main.py", line 66, in <module>
asyncio.get_event_loop().run_until_complete(main())
File "D:\tools\anaconda3\envs\mediaCrawler\lib\asyncio\base_events.py", line 642, in run_until_complete
return future.result()
File "D:\workspace\crawler\MediaCrawler-main\main.py", line 56, in main
await crawler.start()
File "D:\workspace\crawler\MediaCrawler-main\media_platform\xhs\core.py", line 99, in start
await self.search()
File "D:\workspace\crawler\MediaCrawler-main\media_platform\xhs\core.py", line 179, in search
await self.batch_get_note_comments(note_ids, xsec_tokens)
File "D:\workspace\crawler\MediaCrawler-main\media_platform\xhs\core.py", line 359, in batch_get_note_comments
await asyncio.gather(*task_list)
File "D:\workspace\crawler\MediaCrawler-main\media_platform\xhs\core.py", line 374, in get_comments
await self.xhs_client.get_note_all_comments(
File "D:\workspace\crawler\MediaCrawler-main\media_platform\xhs\client.py", line 360, in get_note_all_comments
await callback(note_id, comments)
File "D:\workspace\crawler\MediaCrawler-main\store\xhs\__init__.py", line 129, in batch_update_xhs_note_comments
await update_xhs_note_comment(note_id, comment_item)
File "D:\workspace\crawler\MediaCrawler-main\store\xhs\__init__.py", line 162, in update_xhs_note_comment
await XhsStoreFactory.create_store().store_comment(local_db_item)
File "D:\workspace\crawler\MediaCrawler-main\store\xhs\xhs_store_impl.py", line 246, in store_comment
await self.save_data_to_json(comment_item, "comments")
File "D:\workspace\crawler\MediaCrawler-main\store\xhs\xhs_store_impl.py", line 215, in save_data_to_json
save_data = json.loads(await file.read())
File "D:\tools\anaconda3\envs\mediaCrawler\lib\json\__init__.py", line 346, in loads
return _default_decoder.decode(s)
File "D:\tools\anaconda3\envs\mediaCrawler\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "D:\tools\anaconda3\envs\mediaCrawler\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
📷 错误截图
这是一开始:
一开始没有问题,运行到一半的时候,控制台会卡住,然后输出一大段爬到的记录,输出完之后,就会报错如下:
看错误信息是存储评论的时候json.loads反序化成python对象遇到了json格式问题,临时解决的话,建议使用mysqldb来存储数据。