一个现代的快速 Python 库,用于快速从 Twitter 非官方 API 中删除推文和用户。
该工具可帮助您按搜索短语、按 ID 和用户名截取推文。它使用 Twitter API,与网站上使用的 API 相同。
我曾经使用 twint 来废弃推文,但它有很多错误,并且无法正常工作。该代码并不容易理解。所有任务都有一个配置,用户必须知道确切的参数。最后一个重要的事情是 Api 可以改变——Twitter 是 API 所有者,改变取决于它。当某些东西不起作用并且用户必须将错误报告为问题时,这很烦人。
pip install -U stweet
如果您想赞助我,为了感谢该项目,请给我发送一些加密货币?:
硬币 | 钱包地址 |
---|---|
比特币 | 3EajE9DbLvEmBHLRzjDfG86LyZB4jzsZyg |
以太币 | 0xE43d8C2c7a9af286bc2fc0568e2812151AF9b1FD |
要提出简单的请求,必须准备报废任务。该任务应由**运行者**处理。
import stweet as st
def try_search ():
search_tweets_task = st . SearchTweetsTask ( all_words = '#covid19' )
output_jl_tweets = st . JsonLineFileRawOutput ( 'output_raw_search_tweets.jl' )
output_jl_users = st . JsonLineFileRawOutput ( 'output_raw_search_users.jl' )
output_print = st . PrintRawOutput ()
st . TweetSearchRunner ( search_tweets_task = search_tweets_task ,
tweet_raw_data_outputs = [ output_print , output_jl_tweets ],
user_raw_data_outputs = [ output_print , output_jl_users ]). run ()
def try_user_scrap ():
user_task = st . GetUsersTask ([ 'iga_swiatek' ])
output_json = st . JsonLineFileRawOutput ( 'output_raw_user.jl' )
output_print = st . PrintRawOutput ()
st . GetUsersRunner ( get_user_task = user_task , raw_data_outputs = [ output_print , output_json ]). run ()
def try_tweet_by_id_scrap ():
id_task = st . TweetsByIdTask ( '1447348840164564994' )
output_json = st . JsonLineFileRawOutput ( 'output_raw_id.jl' )
output_print = st . PrintRawOutput ()
st . TweetsByIdRunner ( tweets_by_id_task = id_task ,
raw_data_outputs = [ output_print , output_json ]). run ()
if __name__ == '__main__' :
try_search ()
try_user_scrap ()
try_tweet_by_id_scrap ()
上面的示例表明,废弃推文只需要几行代码。
Stweet 使用网站上的 api,因此没有有关接收响应的文档。响应保存为原始数据,因此最终用户必须自行解析它。也许解析器会被添加到功能中。
报废的数据可以通过使用RawDataOutput
抽象类以不同的方式导出。这些输出的列表可以在每个运行器中传递 - 是的,可以通过两种不同的方式导出。
目前,sweet 已实现:
库与 tor-python-easy 集成。它允许使用带有公开控制端口的 Tor 代理 – 在需要时更改 IP。
如果您想使用 Tor 代理客户端,您需要准备自定义 Web 客户端并在运行器中使用它。
您需要运行 tor proxy——您可以在本地操作系统上运行它,也可以使用这个 docker-compose。
下面的代码片段展示了如何使用代理:
import stweet as st
if __name__ == '__main__' :
web_client = st . DefaultTwitterWebClientProvider . get_web_client_preconfigured_for_tor_proxy (
socks_proxy_url = 'socks5://localhost:9050' ,
control_host = 'localhost' ,
control_port = 9051 ,
control_password = 'test1234'
)
search_tweets_task = st . SearchTweetsTask ( all_words = '#covid19' )
output_jl_tweets = st . JsonLineFileRawOutput ( 'output_raw_search_tweets.jl' )
output_jl_users = st . JsonLineFileRawOutput ( 'output_raw_search_users.jl' )
output_print = st . PrintRawOutput ()
st . TweetSearchRunner ( search_tweets_task = search_tweets_task ,
tweet_raw_data_outputs = [ output_print , output_jl_tweets ],
user_raw_data_outputs = [ output_print , output_jl_users ],
web_client = web_client ). run ()
访客客户端上的 Twitter 阻止多分页。有时,在一个查询中可能会调用 3 个分页。为了避免这种限制,请划分较小零件的报废期。
Twitter 将于 2023 年阻止 API 将时间范围放入时间戳中 - 仅接受 YYYY-MM-DD 格式。在箭头中只能输入时间,不能输入小时。
库的一小部分使用 twint 的代码。 Twint 也是创作 sweet 的主要灵感来源。