Xây dựng công cụ quét Twitter của riêng bạn để nhận các thẻ băm xu hướng bằng Python
Việc soạn thảo HTML có thể khá rắc rối, vì vậy hãy đảm bảo rằng bạn hiểu quy trình này với một chút thực hành Python.
Twitter là một trong những nền tảng truyền thông xã hội có ảnh hưởng nhất từng tồn tại. Hàng triệu người bao gồm các chính trị gia, người nổi tiếng và CEO hàng đầu sử dụng nền tảng này để chia sẻ suy nghĩ của họ mỗi ngày.
Tab xu hướng là một trong những nơi tốt nhất để tìm hiểu tin tức thời gian thực và cảm xúc trên mạng xã hội. Bạn có thể phân tích và sử dụng dữ liệu này để lập kế hoạch quảng cáo thương hiệu, chạy chiến dịch và thúc đẩy doanh số bán hàng gấp nhiều lần. Nhưng làm thế nào bạn có thể nhận được mười thẻ bắt đầu bằng # thịnh hành nhất trên Twitter?
Mục Lục
Quy trình xây dựng thuật toán
Bước đầu tiên để xây dựng bất kỳ chương trình nào là ghi chú và hiểu các bước cần thiết để xây dựng một trình quét Twitter. Họ đang:
- Mở Google Chrome.
- Truy cập trang xu hướng của Twitter.
- Thu thập các thẻ bắt đầu bằng # và liên kết trang tương ứng của chúng.
- Lưu dữ liệu trong bảng tính.
Điều này đóng vai trò là thuật toán của câu lệnh bài toán.
Hiểu trang web Twitter
Bạn cần biết cách một trang web đánh dấu dữ liệu của nó trước khi bạn có thể trích xuất nó. Nó sẽ giúp ích rất nhiều nếu bạn hiểu rõ về những điều cơ bản của HTML và CSS.
Làm theo các bước sau để tìm ra cách Twitter thể hiện một thẻ bắt đầu bằng # thịnh hành và URL của thẻ đó:
- Chuyến thăm Trang thịnh hành của Twitter. Bạn cũng có thể điều hướng đến Twitter.com → Khám phá → Xu hướng để xem nó.
- Kiểm tra cột chính bằng Chrome Dev Tools. Đi đến Menu (3 chấm) > Các công cụ khác> Những công cụ phát triển và di chuột qua công cụ chọn phần tử qua khu vực thịnh hành.
- Dòng thời gian thịnh hành là một div với một aria-label thuộc tính có giá trị là “Dòng thời gian: Khám phá”.
Di chuột qua phần đánh dấu trong Các yếu tố để hiểu rõ hơn về cấu trúc trang. Nữa div lưu trữ thẻ bắt đầu bằng # / chủ đề thịnh hành. Sử dụng div này làm bộ đếm và lặp lại tất cả các div trong trang chứa thẻ bắt đầu bằng # / chủ đề thịnh hành.
Nội dung được lưu trữ trong một nhịp hoặc một vài phần tử nhịp.
Quan sát tab đang mở và lưu ý hệ thống phân cấp. Bạn có thể sử dụng điều này để xây dựng một biểu thức XPath.
Biểu thức XPath cho phần tử cụ thể này là:
'//div[@aria-label="Timeline: Explore"]/div[1]/div[3]/div[1]/div[1]/div[1]/div[1]/div[2]/span[1]'Lặp lại và nhắm mục tiêu div[3]div[4]div[5], và như thế. Đối với mười thẻ bắt đầu bằng # hàng đầu, bộ đếm chạy từ 3 đến 13. XPath tổng quát trở thành:
//div[@aria-label="Timeline: Explore"]/div[1]/div[{i}]/div[1]/div[1]/div[1]/div[1]/div[2]/span[1]' - Nhấp vào bất kỳ thẻ bắt đầu bằng # nào để hiểu URL của các trang của thẻ đó. Nếu so sánh các URL, bạn nên nhận thấy rằng chỉ có tham số truy vấn thay đổi để khớp với tên của thẻ bắt đầu bằng #. Bạn có thể sử dụng thông tin chi tiết này để tạo URL mà không cần thực sự trích xuất chúng.
Dự án này sử dụng các mô-đun và công cụ Python sau:
1. Mô-đun gấu trúc
Bạn có thể sử dụng lớp Pandas DataFrame để lưu trữ các thẻ bắt đầu bằng # và các liên kết tương ứng của chúng ở định dạng bảng. Điều này sẽ hữu ích khi thêm những nội dung này vào tệp CSV mà bạn có thể chia sẻ ra bên ngoài.
2. Mô-đun thời gian
Sử dụng mô-đun Thời gian để thêm độ trễ vào chương trình Python để cho phép tải đầy đủ nội dung trang. Ví dụ này sử dụng độ trễ là 15 giây, nhưng bạn có thể thử nghiệm và chọn độ trễ thích hợp cho hoàn cảnh của mình.
3. Mô-đun Selenium
Selenium có thể tự động hóa quá trình tương tác với web. Bạn có thể sử dụng nó để kiểm soát một phiên bản của trình duyệt web, mở trang thịnh hành và cuộn xuống. Để cài đặt Selenium trong môi trường Python của bạn, hãy mở Phần cuối và thực hiện pip cài đặt selen.
4. Trình điều khiển Web
Sử dụng trình điều khiển web kết hợp với Selenium để tương tác với trình duyệt. Có các trình điều khiển web khác nhau có sẵn dựa trên trình duyệt bạn muốn tự động hóa. Đối với bản dựng này, hãy sử dụng trình duyệt Google Chrome phổ biến. Để cài đặt trình điều khiển web cho Chrome:
- Kiểm tra phiên bản trình duyệt bạn đang sử dụng bằng cách truy cập Thực đơn (3 chấm) > Trợ giúp > Về Google Chrome.
- Lưu ý phiên bản của trình duyệt; trong trường hợp này, nó là 106.0.5249.62.
- Đi đến của bạn Phần cuối và gõ pip cài đặt chromedriver-binary == version_number:
pip install chromedriver-binary==106.0.5249.62Nếu không có phiên bản phù hợp, pip sẽ hiển thị cho bạn danh sách những phiên bản có sẵn; chọn một trong những gần nhất với phiên bản chrome của bạn.
Cách xây dựng Twitter Scraper
Làm theo các bước sau để xây dựng chương trình của bạn và nhận các thẻ bắt đầu bằng # thịnh hành theo thời gian thực. Bạn có thể tìm thấy mã nguồn hoàn chỉnh trong Kho lưu trữ GitHub này.
- Nhập các mô-đun được yêu cầu vào môi trường Python.
from selenium import webdriver
from selenium.webdriver.common.by import By
import chromedriver_binary
import time
import pandas as pd - Tạo một đối tượng để khởi chạy ChromeDriver và khởi chạy trình duyệt Google Chrome bằng cách sử dụng webdriver.Chrome () hàm số.
browser = webdriver.Chrome() - Mở trang thịnh hành của Twitter bằng cách chuyển URL của nó tới lấy() hàm số.
browser.get('https://twitter.com/explore/tabs/trending') - Áp dụng độ trễ để nội dung của trang được tải đầy đủ.
time.sleep(15) - Tạo một danh sách trống để lưu trữ các thẻ bắt đầu bằng # và khai báo một vòng lặp chạy từ 3 đến 13 để khớp với biến trong biểu thức XPath từ trước đó.
trending_topic_content=[]
for i in range(3,13): - Sử dụng find_element () chức năng và vượt qua bộ chọn XPath để nhận các chủ đề thịnh hành và thẻ bắt đầu bằng # trên Twitter:
xpath = f'//div[@aria-label="Timeline: Explore"]/div[1]/div[{i}]/div[1]/div[1]/div[1]/div[1]/div[2]/span[1]'
trending_topic = browser.find_element(By.XPATH, xpath)
trending_topic_content.append(trending_topic.text) - Tạo một danh sách trống để lưu trữ tất cả các URL và khai báo một vòng lặp chạy qua tất cả các thẻ bắt đầu bằng #.
urls=[]
for i in trending_topic_content:Sử dụng toán tử lát cắt để bỏ qua thẻ bắt đầu bằng # để tạo URL của nó và thay thế khoảng trắng bằng mã hóa URL, % 20. Thêm các liên kết vào danh sách.
if i.startswith("#"):
i = i[1:]
url='https://twitter.com/search?q=%23' + i + '&src=trend_click'
else:
url = 'https://twitter.com/search?q=' + i + '&src=trend_click'
url = url.replace(" ", "%20")
urls.append(url) - Tạo Từ điển cặp khóa-giá trị với khóa là thẻ bắt đầu bằng # và giá trị là URL của chúng.
dic={'HashTag':trending_topic_content,'URL':urls} - Chuyển đổi từ điển không có cấu trúc thành DataFrame dạng bảng.
df=pd.DataFrame(dic)
print(df) - Lưu DataFrame vào tệp CSV mà bạn có thể xem trong Microsoft Excel hoặc xử lý thêm.
df.to_csv("Twitter_HashTags.csv",index=False)
Có được những thông tin chi tiết có giá trị bằng cách sử dụng Web Scraping
Lướt web là một phương pháp mạnh mẽ để có được dữ liệu mong muốn và phân tích dữ liệu đó để đưa ra quyết định. Beautiful Soup là một thư viện ấn tượng mà bạn có thể cài đặt và sử dụng để quét dữ liệu từ bất kỳ tệp HTML hoặc XML nào bằng Python.
Với điều này, bạn có thể truy cập internet để nhận được các tiêu đề tin tức thời gian thực, giá của sản phẩm, điểm số thể thao, giá trị cổ phiếu, v.v.