如何用Selenium获取推文作者的Twitter Handle
用Selenium获取推文作者Twitter Handle的代码修改方案
核心问题分析
你当前无法获取作者Handle,主要是定位Handle的元素路径不准确,且忽略了页面动态加载的等待机制。以下是针对性的修改建议:
关键修改点
- 使用相对XPATH定位:从单条推文元素内部查找Handle,避免定位到其他推文的内容
- 精准匹配Handle元素特征:Twitter的作者Handle以
@开头,对应链接格式为/用户名,利用这两个特征提高定位准确性 - 添加显式等待与异常捕获:处理页面加载延迟和元素定位失败的情况,避免程序崩溃
修改后的完整代码
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import time # 初始化浏览器(确保ChromeDriver与浏览器版本匹配) driver = webdriver.Chrome() # 替换为你的目标关键词搜索链接 search_url = "https://twitter.com/search?q=你的关键词&src=typed_query&f=live" driver.get(search_url) # 显式等待搜索结果加载完成 wait = WebDriverWait(driver, 15) wait.until(EC.presence_of_element_located((By.XPATH, '//div[@data-testid="tweet"]'))) # 滚动页面获取至少10条推文 tweets = [] while len(tweets) < 10: # 获取当前可见的所有推文元素 current_tweets = driver.find_elements(By.XPATH, '//div[@data-testid="tweet"]') # 去重添加到列表 for tweet in current_tweets: if tweet not in tweets: tweets.append(tweet) # 滚动到底部加载更多 driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") time.sleep(2) # 给页面加载留时间,可根据网络调整 # 提取每条推文的信息(取前10条) for idx, tweet in enumerate(tweets[:10], 1): # 提取推文文本 try: tweet_text = tweet.find_element(By.XPATH, './/div[@data-testid="tweetText"]').text except: tweet_text = "[无法获取文本]" # 提取时间戳 try: timestamp = tweet.find_element(By.XPATH, './/time').get_attribute('datetime') except: timestamp = "[无法获取时间戳]" # 提取作者Handle(核心修改部分) try: # 相对路径定位:从当前推文内找以@开头、链接为用户主页的元素 handle = tweet.find_element(By.XPATH, './/a[starts-with(text(), "@") and contains(@href, "/")]').text except: handle = "[无法获取Handle]" print(f"推文{idx}:") print(f"作者Handle: {handle}") print(f"文本内容: {tweet_text}") print(f"发布时间: {timestamp}") print("-" * 60) driver.quit()
额外注意事项
- 页面结构变化:Twitter的前端元素结构可能会更新,如果XPATH失效,打开浏览器开发者工具(F12),手动定位Handle元素的最新路径
- 反爬应对:不要频繁滚动或请求,适当调整
time.sleep的时长,避免被限制访问 - 浏览器驱动匹配:确保ChromeDriver的版本与你安装的Chrome浏览器版本一致,否则会出现启动失败的问题
内容的提问来源于stack exchange,提问作者drowsycoder
相关产品推荐
相关产品推荐

