返回

如何使用 Selenium Python 解析 Twitter 推文?——一个全面的指南

python

解析推特:使用 Selenium Python 的全面指南

简介

Twitter是一个宝贵的社交媒体平台,每天产生大量的推文。通过解析这些推文,我们可以获取见解丰富的资料,用于情绪分析、市场调研、客户服务等领域。Selenium Python是一个强大的网络自动化工具,可用于提取网站数据,使其成为解析推特推文的理想选择。

挑战:滚动和推文收集

初学者在使用 Selenium Python 解析推特时,经常遇到以下挑战:

1. 滚动页面以加载更多推文不起作用

解决方法:

  • 启用显式等待,确保页面完全加载。
  • 使用 JavaScript 执行滚动。

2. 推文收集器无法可靠地收集推文,或收集不一致的数据

解决方法:

  • 使用精确的 CSS 选择器定位推文内容。
  • 使用遍历器依次获取推文。
  • 定期滚动页面以加载更多推文。

完整代码

import os
from selenium.webdriver.common.by import By
from selenium_stealth import stealth
from seleniumwire import webdriver
from dotenv import load_dotenv
import time

load_dotenv()
LOGIN = os.getenv('LOGIN')
PASSWORD = os.getenv('PASSWORD')
IP_ADRESS = os.getenv('FR_IP_ADRESS')
PORT = os.getenv('FR_PORT')

options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_argument('--ignore-certificate-errors')
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)

proxy_options = {
    'proxy': {
        'http': f'http://{LOGIN}:{PASSWORD}@{IP_ADRESS}:{PORT}'
    }
}

try:
    link = 'https://twitter.com/elonmusk'
    browser = webdriver.Chrome(
        options=options,
        seleniumwire_options=proxy_options
    )

    stealth(
        browser,
        languages=["en-US", "en"],
        vendor="Google Inc.",
        platform="Win32",
        webgl_vendor="Intel Inc.",
        renderer="Intel Iris OpenGL Engine",
        fix_hairline=True,
    )

    browser.get(link)

    browser.implicitly_wait(20)
    target = browser.find_elements(
            By.CSS_SELECTOR, '[data-testid="tweet"]'
        )

    for i in range(10):
        time.sleep(2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight)")

    twits = browser.find_elements(
            By.CSS_SELECTOR, '[data-testid="tweet"] [data-testid="tweetText"]'
        )

    for twit in twits[::10]:
        print(twit.text)

finally:
    time.sleep(20)
    browser.quit()

常见问题解答

1. 如何确保可靠地收集推文?
使用精确的 CSS 选择器,启用显式等待,并每隔一段时间滚动页面以加载更多推文。

2. 为什么需要滚动页面?
Twitter在初始加载时只显示有限数量的推文。滚动页面会触发加载更多推文。

3. 如何在 Selenium Python 中使用代理?
创建 proxy_options 字典,并将其作为 seleniumwire_options 传递给 webdriver.Chrome()

4. 如何避免网站检测到自动化?
使用Selenium Stealth库来模拟真实用户的行为,从而避免网站检测。

5. 有没有更简单的解析推特推文的方法?
有许多现成的工具和库可以简化推特解析过程,例如 Tweepy、TwitterAPI 和 SocialDataHub。

结论

通过遵循本文的指南,你可以轻松使用 Selenium Python 解析 Twitter 推文。通过实施适当的滚动技术和可靠的推文收集器,你可以确保从 Twitter 获取宝贵的数据,以满足你的需求。