Hướng dẫn what python package is best for getting data from twitter? - gói python nào là tốt nhất để lấy dữ liệu từ twitter?

Xem xét Tweepy và Twint - ưu và nhược điểm của cả hai, đoạn mã, các trường hợp sử dụng tiềm năng, cũng như khuyến nghị của tôi.

Ảnh của Kon Karampelas trên unsplash

Twitter là một kho báu tuyệt đối cho bất kỳ nhà khoa học dữ liệu nào, cho dù họ là một chuyên gia, sinh viên hay người có sở thích. Nó kết nối mọi người từ mọi tầng lớp, cho dù bạn là một nhạc sĩ đầy tham vọng hay Taylor Swift, cho dù bạn là một cầu thủ bóng rổ giải đấu Rec-League hay LeBron James, tất cả các cách từ các chính trị gia địa phương đến các tổng thống hiện tại và quá khứ của Hoa Kỳ.

Cơ sở người dùng của nó rộng bao nhiêu và nó tạo ra bao nhiêu dữ liệu? Kể từ quý 3 năm 2019, cơ sở người dùng hoạt động hàng ngày của Twitter là khoảng 145 triệu người và trong năm 2018, nửa tỷ tweet đã được gửi đi mỗi ngày. Ngay cả với giới hạn 280 ký tự của nó, không có gì ngạc nhiên khi dữ liệu Twitter trình bày một mảnh đất màu mỡ mà từ đó hiểu biết dữ liệu có thể được thu hoạch.

Nhưng sau đó - làm thế nào để chúng ta thu thập một số dữ liệu này? Trên thực tế, vì nhiều lý do-có những kho lưu trữ hạn chế, được quy định trước của dữ liệu Twitter (xem liên kết này để thảo luận). Bản thân Twitter trong những dịp đặc biệt có thể làm cho việc tổng hợp dữ liệu của riêng mình có sẵn, chúng rất ít. Họ thậm chí có thể không được công khai-chỉ dành cho một nhóm các nhà phát triển và nhà nghiên cứu được chọn, như bộ dữ liệu liên quan đến Covid-19 này.

Đó là lý do tại sao tôi muốn dành một chút thời gian trong bài đăng này so sánh hai gói Python của bên thứ ba nổi tiếng, Tweepy và Twint.

Cả hai đều là những kho lưu trữ cực kỳ phổ biến, như bạn thấy trong biểu đồ của sự phổ biến GitHub của nó dưới đây.

Twint và Tweepy-Lịch sử Ngôi sao Github (https://star-history.t9t.io/)

Tôi đã xây dựng ứng dụng phân tích dữ liệu Twitter của riêng mình tại đây http://tweetdash.jphwang.com, mà tôi đã thử thu thập dữ liệu với cả hai thư viện.

Màn hình lấy từ ứng dụng phân tích dữ liệu Twitter của tôi (liên kết)

Như với bất kỳ công cụ nào, chúng không hoàn hảo, và mỗi Tweepy và Twint đều có điểm mạnh và điểm yếu trong quan điểm của tôi. Nhưng, chúng là những công cụ tuyệt vời và ngay cả với kinh nghiệm hạn chế của tôi, tôi nghĩ rằng hầu hết các nhu cầu dữ liệu Twitter của bạn có thể được đáp ứng với một hoặc kết hợp các thư viện này.

Không có gì khó khăn hơn nữa, hãy để bắt đầu!

Sự khác biệt tổng thể

Sử dụng phương pháp / xác thực

Vì vậy, sự khác biệt lớn nhất trong tâm trí của tôi là điều này - Tweepy là một thư viện Python để truy cập API Twitter chính thức - như vậy, bạn cần đăng ký truy cập nhà phát triển và nhận khóa từ Twitter.

  • Liên kết để đăng ký truy cập nhà phát triển Twitter
  • Liên kết cho thấy cách nhận khóa API Twitter

Mặt khác, Twint là một công cụ cạo được thiết kế để lấy tweet và khắc phục các hạn chế của API.

.

Tài liệu

Tài liệu Tweepy, theo quan điểm của tôi, đỉnh cao. Tài liệu của nó bao gồm các hướng dẫn cho tất cả mọi thứ từ xác thực đến phát trực tuyến và bao gồm tham chiếu API cho tất cả các phương thức của nó.

Bắt đầu từ trải nghiệm bằng không, bạn sẽ có thể bắt đầu với Tweepy ngay lập tức để tải xuống các mốc thời gian, thông tin người dùng hoặc thực hiện tìm kiếm ngay lập tức.

Mặt khác, việc duyệt tài liệu Twint, mang đến cho bạn cảm giác rằng gói hàng đã vượt qua tài liệu, hoặc có thể họ chỉ cần có nó.

Thật thú vị, Twint có thể sử dụng được từ dòng lệnh shell - vì vậy nếu người dùng thích, họ chỉ có thể chạy twint mà không cần đi vào vỏ trăn hoặc viết một kịch bản Python.

tất cả những thứ đó có ý nghĩa gì? Trên thực tế, nếu điều duy nhất mà bạn đang tìm cách làm là thu thập một số lượng lớn các tweet, thì Twint có lẽ là một công cụ tốt hơn, trong khi Tweepy phù hợp hơn để thu thập một bộ siêu dữ liệu phong phú hơn, cho phép linh hoạt và khả năng mở rộng cho những người Sử dụng API chính thức.

Đó có lẽ vẫn còn một chút trừu tượng. Hãy cùng di chuyển để xem xét một số ví dụ cụ thể hơn.

Lấy tweet

Với Tweepy

Khi bạn đã thiết lập tài khoản nhà phát triển của mình và các khóa & mã thông báo của bạn - đoạn mã này sẽ giúp bạn có được một bộ tweet - trong trường hợp này, tôi đang lấy 200 tweet mới nhất từ ​​tài khoản Twitter của LeBron James.

import tweepyauth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)

api = tweepy.API(auth)

screenname = 'KingJames'
tweets = api.user_timeline(screenname, count=200)

Với twint

Để làm tương tự với Twint, bạn thực sự có thể chạy lệnh này từ dòng lệnh/shell:command line/shell:

twint -u KingJames --limit 200 > testtwint.txt

Và để làm điều này trong Python, một cái gì đó như thế này nên hoạt động:

import twintc = twint.Config()
c.Limit = 200
c.Store_csv = True
c.Username = username
c.Output = fname
twint.run.Search(c)

Vì vậy, cả hai tương đối đủ đơn giản. Và cả hai bao gồm ít nhiều tất cả những gì bạn có thể muốn biết về mỗi tweet.

Tweepy tạo dữ liệu với các cột sau: produces data with these columns:

['created_at', 'id', 'id_str', 'full_text', 'truncated', 'display_text_range', 'entities', 'extended_entities', 'source', 'in_reply_to_status_id', 'in_reply_to_status_id_str', 'in_reply_to_user_id', 'in_reply_to_user_id_str', 'in_reply_to_screen_name', 'user', 'geo', 'coordinates', 'place', 'contributors', 'is_quote_status', 'retweet_count', 'favorite_count', 'favorited', 'retweeted', 'possibly_sensitive', 'lang']

Mặt khác, Twint tạo dữ liệu với các cột sau:Twint produces data with these columns:

['id', 'conversation_id', 'created_at', 'date', 'time', 'timezone', 'user_id', 'username', 'name', 'place', 'tweet', 'mentions', 'urls', 'photos', 'replies_count', 'retweets_count', 'likes_count', 'hashtags', 'cashtags', 'link', 'retweet', 'quote_url', 'video', 'near', 'geo', 'source', 'user_rt_id', 'user_rt', 'retweet_id', 'reply_to', 'retweet_date', 'translate', 'trans_src', 'trans_dest']

Vâng, nó rất nhiều cột. Nó khó hiểu. Nhưng tin tốt là hai bộ ít nhiều giống hệt nhau. Họ phải như vậy, vì cả hai đều trong lý thuyết tải xuống cùng một dữ liệu từ Twitter.

Sự khác biệt về hiệu suất

Theo kinh nghiệm của tôi, thời gian để lấy tweet thực sự ít nhiều không quan trọng trong sơ đồ của bất kỳ xử lý văn bản nào. TWINT trong kinh nghiệm của tôi là một chậm hơn - điều này có ý nghĩa với tôi, vì nó đang tận dụng chức năng tìm kiếm Twitter Twitter cho việc quét của nó, thay vì đi qua API bản địa Twitter Twitter.

Điều này đưa tôi đến điểm tiếp theo của tôi…

Giới hạn

Hạn chế lớn nhất của Tweepy là API Twitter. API Twitter Twitter có nhiều giới hạn khác nhau tùy thuộc vào tầng tài khoản (giá) của bạn và trên hết, API Twitter đã giới hạn bạn đến 3200 tweet cuối cùng trong một dòng thời gian.

Mặt khác, giới hạn chính của Twint, là nó thực sự chỉ được thiết kế để lấy các tweet, và đó là nó. Nếu bạn muốn tương tác với Twitter - đăng tweet, người dân/người câm, gửi DMS, v.v. - đó là tất cả lãnh thổ API của Twitter và bạn nên chuyển sang Tweepy cho tất cả những điều đó.

Các trường hợp sử dụng khác

Như Foreshadowed, tôi sẽ giới thiệu Tweepy qua Twint cho hầu hết mọi trường hợp sử dụng khác ngoài việc lấy một loạt các tweet để phân tích. Có những trường hợp sử dụng nào khác? Dưới đây là một số ví dụ.

Tự động theo dõi lại

Có lẽ bạn muốn thỉnh thoảng đảm bảo rằng bạn theo dõi tất cả những người theo dõi bạn:

auth = tweepy.OAuthHandler("consumer_key", "consumer_secret")
redirect_user(auth.get_authorization_url())
auth.get_access_token("verifier_value")
api = tweepy.API(auth)
for follower in tweepy.Cursor(api.followers).items():
follower.follow()

Tự động retweets

Có lẽ bạn muốn xây dựng một bot sẽ tự động chuyển tiếp khi tên của nó được đề cập - bạn đã may mắn, vì bot này đã được xây dựng ở đây (bởi Charles Hooper).

Hướng dẫn trực tuyến

Hoặc có thể bạn muốn làm theo hướng dẫn này trên RealPython., Và tìm hiểu cách họ thực hiện các ứng dụng có thể tự động fav hoặc tweet theo mong muốn của bạn.

API Twitter không chỉ cho phép một số lượng lớn các ví dụ, mà còn có rất nhiều ví dụ để làm theo để xây dựng các ứng dụng của riêng bạn. Điều này chỉ đơn giản là có thể với Twint. Twint ít nhiều làm một việc và làm tốt nó. Nhưng đó là về nó.

khuyến nghị

Hãy nhớ cách tôi đã đề cập rằng tôi đã xây dựng ứng dụng phân tích dữ liệu Twitter của riêng mình (http://tweetdash.jphwang.com)? Chà, kinh nghiệm của tôi là Twint là một công cụ tuyệt vời để lấy dữ liệu để xây dựng ứng dụng demo này.

Mặt khác, quá trình học tập và sử dụng Twint là vô cùng đau đớn, do tài liệu tối thiểu của nó. Khi tôi cố gắng làm bất cứ điều gì được hiển thị trong mã ví dụ hoặc đi chệch khỏi ví dụ mã, nó yêu cầu các đơn đặt hàng có mức độ lớn hơn tôi đã làm với Tweepy.

Với Tweepy, tôi có thể dựa vào tài liệu chính thức của nó, những người khác hướng dẫn hoặc các dự án ví dụ. Như mọi khi, số dặm của bạn có thể khác nhau, nhưng đó chỉ là kinh nghiệm của tôi.

Tất cả điều này là để nói rằng sử dụng tweepy càng nhiều càng tốt - và chỉ khi bạn nhấn một bức tường trong việc có được các tweet thô, hãy xem liệu Twint có thể là một sự thay thế không. Tôi nghĩ rằng bạn đã tiết kiệm cho mình rất nhiều vấn đề đau đầu theo cách đó và hiếm khi bạn sẽ cần nhiều dữ liệu hơn API cho phép.

Đó là tất cả cho ngày hôm nay.

Nếu bạn thích điều này, hãy nói 👋 / theo dõi trên Twitter hoặc theo dõi ở đây để cập nhật. Trong trường hợp bạn đã bỏ lỡ nó, hãy xem bài viết này về việc xây dựng các ứng dụng web với Plotly Dash:

Và cái này so sánh API thị trường tài chính:

Tôi đã dành rất nhiều thời gian để viết vì những thứ cá nhân đang diễn ra, nhưng tôi rất vui khi được trở lại đây. :) Hẹn gặp lại lần sau!

Làm cách nào để lấy dữ liệu Twitter từ Python?

Kết nối với API Twitter để có thể tương tác với API Twitter bằng Python, chúng tôi sẽ sử dụng một thư viện có tên Tweepy.Để có thể ẩn các thông tin đăng nhập khỏi mã nguồn và tải chúng dưới dạng các biến môi trường, chúng tôi sẽ sử dụng Python-dotenv.Đầu tiên, tạo a.Tệp env để giữ thông tin đăng nhập của bạn.use a library called Tweepy. To be able to hide the credentials from the source code and load them as environment variables, we'll use python-dotenv. First, create a . env file to hold your credentials.

Làm cách nào để trích xuất một bộ dữ liệu từ Twitter?

Để trích xuất dữ liệu từ Twitter mà không cần mã hóa, bạn có thể sử dụng một công cụ cạo web tự động - Octoparse.Đó là một máy cạo Web mô phỏng sự tương tác của con người với các trang web ...
Bước 1: Nhập URL Twitter và thiết lập phân trang.....
Bước 2: Xây dựng một mục vòng lặp để trích xuất dữ liệu Twitter ..