Nếu bạn đang có kế hoạch thu hút các phương tiện truyền thông xã hội, Twitter là một trong những nền tảng tốt nhất để làm điều đó. Với 230 triệu người dùng hàng tháng, nó có rất nhiều thông tin có giá trị. Có nhiều cách bạn có thể sử dụng nó, từ thực hiện phân tích đến khám phá xu hướng thị trường và cải thiện chiến lược tiếp thị của bạn. Mặc dù Twitter khá hào phóng khi cấp quyền truy cập vào dữ liệu của mình, nhưng API chính thức yêu cầu một quy trình sàng lọc và áp đặt với khá nhiều hạn chế. Để khắc phục những vấn đề này, bạn sẽ phải tìm kiếm các giải pháp thay thế, web scraping là giải pháp tốt nhất. Hướng dẫn này sẽ chia sẻ với bạn về Twitter scraping (thu thập dữ liệu Twitter), giới thiệu các lựa chọn thay thế API và những thách thức bạn có thể gặp phải. Hơn nữa, bạn sẽ tìm thấy ví dụ từng bước về cách thu thập dữ liệu Twitter có sẵn công khai bằng SNScrape. Hãy cùng theo dõi dưới đây!
Twitter Scraping là gì?
Twitter scraping là một cách tự động thu thập dữ liệu công khai từ nền tảng này. Nó thường được thực hiện bằng cách sử dụng các công cụ quét được tạo sẵn hoặc các công cụ được tạo tùy chỉnh. Twitter là một trong số ít nền tảng cung cấp API chính thức, nhưng nó có thể gây khó khăn khi sử dụng vì giới hạn số lượng tweet bạn có thể nhận được (3.200) và thời gian gần đây của chúng (7 ngày qua).
Các nhà tiếp thị truyền thông xã hội sử dụng sự phổ biến của Twitter để làm lợi thế cho họ. Họ thu thập thông tin như tweet, lượt chia sẻ, URL, lượt thích, chủ đề và người theo dõi, v.v. Tìm hiểu Twitter có thể mang lại nhiều hiểu biết thú vị về tiếp thị, theo dõi thương hiệu và danh tiếng, phân tích sự biến đổi hoặc xu hướng thị trường.
Twitter Scraping có hợp pháp không?
Với Twitter scraping có thể thu thập dữ liệu mạng xã hội nếu dữ liệu đó có sẵn công khai (không ẩn đằng sau thông tin đăng nhập) và nội dung không tuân theo quyền sở hữu trí tuệ . Sau đó, có thể có một số yêu cầu bổ sung nếu bạn sẽ làm việc với thông tin cá nhân. Điều khoản dịch vụ (ToS) của nó không cấm quét web, nhưng bạn cần có sự đồng ý trước. Mặc dù các điều khoản này không ràng buộc về mặt pháp lý khi tìm kiếm mà không có tài khoản, nhưng địa chỉ IP của bạn vẫn có thể bị cấm sử dụng nền tảng. Mỗi trường hợp sử dụng được xem xét riêng, bạn sẽ có nhiều quyền tự do hơn khi thu thập dữ liệu cho mục đích nghiên cứu hơn là cho mục đích thương mại.
Dữ liệu nào bạn có thể quét mà không cần đăng nhập?
Các điểm dữ liệu Twitter mà bạn có thể thu thập chia thành ba loại:
- Tweet: văn bản và phương tiện trực quan, URL tweet, ID tweet, tin nhắn, sắp xếp các tweet theo vị trí hoặc lượt thích.
- Hồ sơ: tên, hình ảnh, người theo dõi và số lượng tweet, tiểu sử người dùng, dữ liệu bài đăng mới nhất như nội dung, thời gian, tin nhắn lại, trả lời, v.v.
- Hashtag và từ khóa: URL tweet, thời gian tạo, vị trí, tên người dùng, số lượng trả lời và trích dẫn, hội thoại, dữ liệu phương tiện như liên kết và các dữ liệu khác.
Tuy nhiên, Twitter ngày càng yêu cầu đăng nhập để xem nội dung của nó. Bạn có thể trải nghiệm ở nhiều khu vực khác nhau của trang web, chẳng hạn như khi cuộn xuống trong chuỗi Twitter. Hiện tại, có một cách giải quyết dễ dàng bằng cách xóa cookie trình duyệt của bạn. Nhưng sẽ có ít điểm dữ liệu công khai hơn để thu thập trong tương lai.
Cách Twitter Scraping mà không cần API
Có nhiều cách để thu thập dữ liệu có sẵn công khai từ Twitter mà không cần sử dụng API chính thức. Một là tự xây dựng một công cụ quét bằng cách sử dụng các thư viện quét web. Đây có lẽ là phương pháp khó nhất nhưng cũng mang lại cho bạn nhiều quyền kiểm soát nhất. Đặc biệt nếu bạn đang gặp hạn chế với các phương pháp khác. Mặc dù tìm kiếm trên Twitter dễ dàng hơn so với thu thập dữ liệu trên Instagram, nhưng bạn vẫn cần sử dụng headless browser để hiển thị JavaScript, cùng với các proxy Twitter để tránh bị chặn IP.
Nếu không thích can thiệp vào code, bạn có thể sử dụng các công cụ có mã không thương mại như PhantomBuster và ParseHub. Những công cụ trực quan này cung cấp các mẫu thuận tiện hoặc giao diện trỏ và nhấp. Mặc dù dễ dàng đối với các tác vụ đơn giản, nhưng chúng ngày càng trở nên phức tạp và không hiệu quả khi bạn mở rộng quy mô.
Cuối cùng, bạn có thể sử dụng một trong những thư viện quét web Twitter được tạo sẵn. Những công cụ này cho phép bạn trích xuất dữ liệu bằng cách nhập lệnh vào trình chỉnh sửa mã hoặc dòng lệnh. Chúng không yêu cầu xác thực API hoặc proxy để hoạt động. SNScrape là một ví dụ.
=>> 5 Headless Browser tốt nhất – Mua Proxy để thử nghiệm web
Cách thu thập dữ liệu Twitter bằng Python
Đối với ví dụ này, chúng tôi sẽ quét Twitter bằng thư viện SNScrape Python. Đó là một lựa chọn phổ biến để tìm kiếm trên Twitter vì:
- Bạn có thể bắt đầu truy xuất dữ liệu hữu ích sau vài phút.
- Nó không bị ràng buộc bởi các giới hạn tweet của API.
- Nó trả về dữ liệu lịch sử cũ hơn bảy ngày.
SNScrape có các mô-đun Twitter cho các khía cạnh khác nhau của nền tảng như tìm kiếm, thẻ bắt đầu bằng # và hồ sơ người dùng. Nói chung, bạn có thể sử dụng nó để trích xuất các điểm dữ liệu sau: người dùng, hồ sơ người dùng, thẻ bắt đầu bằng #, tìm kiếm, tweet (chủ đề đơn lẻ hoặc xung quanh), danh sách bài đăng và xu hướng.
Bạn cần cài đặt thư viện SNScrape. Bạn có thể thực hiện việc này bằng cách nhập dòng sau vào thiết bị đầu cuối của hệ điều hành:
pip3 install snscrape
Trước khi bạn bắt đầu, hãy tạo một văn bản mới. Chúng tôi đặt tên cho nó là scraping1.py, nhưng bạn có thể đặt tên bằng bất kỳ tên nào. Mở tệp để bắt đầu mã hóa.
Cách thu thập dữ liệu tìm kiếm của Twitter
Hãy bắt đầu với dữ liệu tìm kiếm trên Twitter. Chúng tôi sẽ loại bỏ 100 tweet đầu tiên cho truy vấn proxy dân cư.
Bước 1. Nhập các mô-đun cần thiết. Chúng ta sẽ cần mô-đun Twitter từ SNScrape và JSON:
from snscrape.modules import twitter
import json
Bước 2. Hãy bắt đầu với tìm kiếm trên Twitter để có được bức tranh toàn cảnh hơn của dữ liệu.
1) Đầu tiên, chúng ta sẽ tập trung vào các biến. Bắt đầu bằng cách nhập biến truy vấn và gán từ khóa làm giá trị chuỗi.
queries = ['residential proxies']
2) Sau đó, xác định số lượng tweet bạn muốn thu thập. Nếu bạn bỏ qua điều này, phiên sẽ không kết thúc cho đến khi bạn loại bỏ tất cả các tweet có liên quan. Hãy đặt tham số yêu cầu max_results thành 100 để bạn không bị chìm trong dữ liệu.
max_results = 100
3) Sau đó, tự thực hiện thu thập. Thao tác này sẽ tạo một phiên bản thu thập mới cho mỗi truy vấn.
def scrape_search(query):
scraper = twitter.TwitterSearchScraper(query)
return scraper
Bước 3. Tiếp theo, hãy lặp lại một tệp đầu ra chuyên dụng cho mỗi truy vấn trong các dòng sau. Bằng cách này, bạn sẽ nhận được kết quả trong một tệp văn bản.
for query in queries:
output_filename = query.replace(" ", "_") + ".txt"
with open(output_filename, 'w') as f:
scraper = scrape_search(query)
i = 0
for i, tweet in enumerate(scraper.get_items(), start = 1):
Bước 4. Bây giờ, hãy chuyển đổi các tweet đã loại bỏ thành đối tượng .json để phân tích cú pháp dữ liệu. Bạn chỉ có thể truy cập nội dung khi kết quả được chuyển đổi.
tweet_json = json.loads(tweet.json())
In ra nội dung của một tweet chẳng hạn như văn bản của nó, tên người dùng, ngày tháng của người tạo, v.v.
print (f"\nScraped tweet: {tweet_json['content']}")
Các dòng sau đây là để ghi dữ liệu vào tệp đầu ra.
f.write(tweet.json())
f.write('\n')
f.flush()
Bước 5. Và cuối cùng, hãy thêm mã kết thúc vòng lặp khi đạt đến max_results<.
if max_results and i > max_results:
break
Lưu mã của bạn, mở dấu nhắc lệnh và thay đổi nó vào thư mục lưu mã. Sau đó, chạy mã. Khi có kết quả, bạn sẽ thấy các tham số như tên người dùng, ngày, URL và chính tweet đó, bên dưới khóa nội dung.
=>> Cách thu thập dữ liệu Instagram (Instagram Scraping) với Selenium
Cách thu thập Hashtag của Twitter
Theo ví dụ trên, bạn cũng có thể dễ dàng thu thập các dữ liệu khác: ví dụ: thẻ bắt đầu bằng #. Chỉ cần chuyển TwitterSearchScraper sang TwitterHashtagScraper. Và thay vì một biến truy vấn, hãy viết một thẻ bạn chọn. Chỉ cần cẩn thận không để lại dấu gạch ngang trong giá trị vì mã sẽ không hoạt động. Bạn cũng sẽ cần thay đổi công cụ quét trong vòng lặp.
hashtag = ['scraping']
max_results = 50
def scrape_hashtag(hashtag):
scraper = twitter.TwitterHashtagScraper(hashtag)
return scraper
Cách thu thập dữ liệu người dùng Twitter
Bạn cũng có thể quét theo tên người dùng hoặc ID người dùng. Tuy nhiên khi xác định các biến đầu vào của bạn, đừng quên các toán tử Boolean. Ngoài ra, hãy đảm bảo liệt kê tên người dùng và ID người dùng dưới dạng chuỗi.
UserId = [‘1097450610864123904’, True]
max_results = 50
def scrape_user(user, isUserId):
twitter.TwitterUserScraper(user, isUserId)
return scraper
Cách thu thập một Tweet trên Twitter
Nếu bạn đang tìm kiếm một tweet cụ thể, bạn cũng có thể tìm kiếm theo ID tweet. Điều này có thể hữu ích nếu bài đăng chứa thông tin quan trọng như đánh giá sản phẩm. Cách tiếp cận ở đây cũng tương tự, nhưng lần này giá trị đầu vào là một số chứ không phải là một chuỗi.
TweetId = 1516359017374887940
def scrape_tweet(tweetId):
scraper = twitter.TwitterTweetScraper(tweetId)
return scraper
Đây là cú pháp đầy đủ:
from snscrape.modules import twitter
import json
# List of queries to scrape
queries = ['residential proxies']
#Max results to get per each query
max_results = 100
# Scrapes Twitter search
# Input: Twitter search (string)
# Example query: "covid"
def scrape_search(query):
scraper = twitter.TwitterSearchScraper(query)
return scraper
#-- Other scrapers that can be implemented
#Scrapes a single tweet
# Intput: Tweet ID (integer)
# Example tweet_id: 1516359017374887940
def scrape_tweet(tweet_id):
scraper = twitter.TwitterTweetScraper(tweet_id)
return scraper
# Input:
# If scraping by Username - username (string), False (boolean)
# Example username "Proxyway1", False
# If scraping by User ID - user_id (string), True (boolean)
# Example User ID "1097450610864123904", True
def scrape_user(user, isUserId):
twitter.TwitterUserScraper(user, isUserId)
return scraper
# Input: Twitter hashtag (string) (without '#')
# Example hashtag: "scraping"
def scrape_hashtag(hashtag):
scraper = twitter.TwitterHashtagScraper(hashtag)
return scraper
for query in queries:
#Creating an output file for each query
output_filename = query.replace(" ", "_") + ".txt"
with open(output_filename, 'w') as f:
scraper = scrape_search(query)
i = 0
for i, tweet in enumerate(scraper.get_items(), start = 1):
# Converting the scraped tweet into a json object
tweet_json = json.loads(tweet.json())
#Printing out the content of a tweet
print (f"\nScraped tweet: {tweet_json['content']}")
#Writing to file
f.write(tweet.json())
f.write('\n')
f.flush()
#Terminate the loop if we reach max_results
if max_results and i > max_results:
break
Vậy là bạn có thể thấy để Twitter Scraping sẽ không phức tạp nếu bạn có công cụ hiệu quả và biết cách sử dụng cú pháp. Thu thập dữ liệu ngay hôm nay với sự trợ giúp của Proxy và các công cụ phù hợp để nâng cao tầm nhìn và hiệu suất cho những kế hoạch của bạn. Chúc các bạn thành công!