Closed zheqiaochen closed 1 month ago
可能是打开了down_log的缘故,可以关闭试试
可能是打开了down_log的缘故,可以关闭试试
谢谢您的回复,我关闭了down_log,结果没有改变,在调用13次api后就提示下载完成了。我尝试了自己另一个twitter账号的cookie,但是结果还是一样,不太清楚出了什么问题,如果您需要我运行诊断代码或者提供信息请告诉我
has_retweet
的前提下,于24-08-25的推文处 (也就是第十三次调用),[媒体] 标签页已经触底,该问题可以参见 #12 #34
在开启转推时,一个新号在获取到24-08-24的推文处就会超出API调用限制,故可以不用考虑
建议换个方向用tag_down,tag留空,配置过滤器
tag = ''
media_latest = True
_filter = 'from:whyyoutouzhele filter:links -filter:replies'
//过滤器可以配合具体的参数(如时间限制),详情请参照这里
经过测试,在未开启
has_retweet
的前提下,于24-08-25的推文处 (也就是第十三次调用),[媒体] 标签页已经触底,该问题可以参见 请问作者关于推特爬不完整是怎么回事呢? #12 使用过程中产生的一些问题 #34在开启转推时,一个新号在获取到24-08-24的推文处就会超出API调用限制,故可以不用考虑
建议换个方向用tag_down,tag留空,配置过滤器
tag = '' media_latest = True _filter = 'from:whyyoutouzhele filter:links -filter:replies'
//过滤器可以配合具体的参数(如时间限制),详情请参照这里
谢谢您的解答,我使用了tag_down的方法,目标是爬取whyyoutouzhele的所有文本推文,我的配置如下:
tag = ''
# 填入tag 带上#号
_filter = 'from:whyyoutouzhele filter:links -filter:replies'
# (可选项) 高级搜索
down_count = 10000
# 因为搜索结果数量可能极大,故手动确定下载总量(近似),填50的倍数,最少50
media_latest = True
# media_latest为True时,对应 [最新] 标签页,False对应 [媒体] 标签页 (与文本模式无关)
# 开启时建议 _filter 设置为 _filter = 'filter:links -filter:replies'
# ------------------------ #
text_down = True
#开启后变为文本下载模式,会消耗大量API次数
##########配置区域##########
max_concurrent_requests = 8 #最大并发数量,默认为8,遇到多次下载失败时适当降低
但是在我爬取了少部分数据后出现了报错:
无过程输出...(๑´ڡ`๑)
Traceback (most recent call last):
File "/Users/chen/Downloads/twitter_download/tag_down.py", line 318, in <module>
tag_down()
File "/Users/chen/Downloads/twitter_download/tag_down.py", line 160, in __init__
self.search_save_text(url)
File "/Users/chen/Downloads/twitter_download/tag_down.py", line 273, in search_save_text
raw_data = json.loads(response)
^^^^^^^^^^^^^^^^^^^^
File "/opt/anaconda3/lib/python3.11/json/__init__.py", line 346, in loads
return _default_decoder.decode(s)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/anaconda3/lib/python3.11/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/anaconda3/lib/python3.11/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)
请问这个情况应该怎么办呢
这是因为账号调用次数超限了
//另外不用开启text_down
选项,这是用来单下文本内容的
这个账号的推文量太大,一次性下载不太现实,我建议在过滤器上加上时间筛选,每天下一部分,或是多个账号同时分批下载,不然不可能下完。
参考:_filter = 'from:whyyoutouzhele filter:links -filter:replies until:2024-09-01 since:2024-08-01'
该样例为 从24-8-1
到 24-9-1
,可以根据实际推文量修改日期间隔
这是因为账号调用次数超限了
//另外不用开启
text_down
选项,这是用来单下文本内容的这个账号的推文量太大,一次性下载不太现实,我建议在过滤器上加上时间筛选,每天下一部分,或是多个账号同时分批下载,不然不可能下完。
参考:_filter = 'from:whyyoutouzhele filter:links -filter:replies until:2024-09-01 since:2024-08-01' 该样例为 从
24-8-1
到24-9-1
,可以根据实际推文量修改日期间隔
再次感谢您的解答!确实分批下载会是一个更好的解决方案,我关闭这个issue了
作者您好,非常感谢您编写的程序,让获取推特数据更加便利。在我使用的时候出现了一个小问题,我的目标是爬取用户李老师不是你老师(id:whyyoutouzhele)的所有帖子,但是每次运行程序只能够下载部分的内容,调用了12次token之后就显示下载完成,实际上仅爬取了一小部分。
在看过其他Issue之后我尝试将has_retweet设置为true,但是仍然还是只有部分帖子。我将配置文件附在了下方,期待您的回复