一個現代的快速 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 的主要靈感來源。