ไลบรารี Python ที่รวดเร็วทันสมัยเพื่อแยกทวีตและผู้ใช้อย่างรวดเร็วจาก API อย่างไม่เป็นทางการของ Twitter
เครื่องมือนี้ช่วยให้คุณคัดลอกทวีตด้วยวลีค้นหา ทวีตด้วยรหัส และผู้ใช้ด้วยชื่อผู้ใช้ ใช้ Twitter API ซึ่งเป็น API เดียวกันที่ใช้บนเว็บไซต์
ฉันใช้ Twint เพื่อคัดลอกทวีต แต่มีข้อผิดพลาดมากมาย และมันก็ทำงานไม่ถูกต้อง รหัสไม่ง่ายที่จะเข้าใจ งานทั้งหมดมีการกำหนดค่าเดียว และผู้ใช้ต้องทราบพารามิเตอร์ที่แน่นอน สิ่งสำคัญสุดท้ายคือความจริงที่ว่า Api สามารถเปลี่ยนแปลงได้ - Twitter เป็นเจ้าของ API และการเปลี่ยนแปลงขึ้นอยู่กับมัน เป็นเรื่องที่น่ารำคาญเมื่อมีบางอย่างใช้งานไม่ได้และผู้ใช้ต้องรายงานจุดบกพร่องว่าเป็นปัญหา
pip install -U stweet
หากคุณต้องการสนับสนุนฉัน เพื่อเป็นการขอบคุณสำหรับโครงการ โปรดส่ง crypto มาให้ฉันบ้าง:
เหรียญ | ที่อยู่กระเป๋าเงิน |
---|---|
บิทคอยน์ | 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 ()
ตัวอย่างด้านบนแสดงให้เห็นว่าต้องใช้โค้ดไม่กี่บรรทัดในการทิ้งทวีต
Stwitter ใช้ api จากเว็บไซต์ ดังนั้นจึงไม่มีเอกสารเกี่ยวกับการรับการตอบกลับ การตอบสนองกำลังบันทึกเป็นแบบดิบ ดังนั้นผู้ใช้ขั้นสุดท้ายจึงต้องแยกวิเคราะห์ด้วยตนเอง บางที parser อาจถูกเพิ่มเข้าไปในฟีเจอร์
ข้อมูลที่ถูกทิ้งสามารถส่งออกได้หลายวิธีโดยใช้คลาสนามธรรม RawDataOutput
รายการผลลัพธ์เหล่านี้สามารถส่งผ่านไปยังนักวิ่งทุกคนได้ ใช่แล้ว คุณสามารถส่งออกได้สองวิธีที่แตกต่างกัน
ขณะนี้ stwitter ได้ดำเนินการ:
ไลบรารี่ถูกรวมเข้ากับ tor-python-easy อนุญาตให้ใช้พร็อกซีทอร์กับพอร์ตควบคุมที่เปิดเผย – เพื่อเปลี่ยน IP เมื่อจำเป็น
หากคุณต้องการใช้ไคลเอนต์พร็อกซีของทอร์ คุณต้องเตรียมเว็บไคลเอนต์แบบกำหนดเองและใช้ในรันเนอร์
คุณต้องเรียกใช้พร็อกซีทอร์ คุณสามารถเรียกใช้บนระบบปฏิบัติการท้องถิ่นของคุณ หรือคุณสามารถใช้นักเทียบท่าเขียนนี้
ข้อมูลโค้ดด้านล่างแสดงวิธีใช้พรอกซี:
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 ยังเป็นแรงบันดาลใจหลักในการสร้างสวีตอีกด้วย