使用 Python 构建您自己的 Twitter Scraper 以获取趋势标签
抓取 HTML 可能会很繁琐,因此请确保您通过一些 Python 练习来理解这个过程。
Twitter 是有史以来最具影响力的社交媒体平台之一。包括顶级政治家、名人和首席执行官在内的数百万人每天使用该平台分享他们的想法。
趋势选项卡是了解实时新闻和社交媒体情绪的最佳场所之一。您可以分析和使用这些数据来规划品牌广告、开展营销活动并成倍提高销量。但如何才能获得 Twitter 上十大热门主题标签呢?
算法构建过程
构建任何程序的第一步是注意并理解构建 Twitter 抓取工具所需的步骤。他们是:
- 打开谷歌浏览器。
- 访问 Twitter 的趋势页面。
- 收集主题标签及其各自的页面链接。
- 将数据保存在电子表格中。
这作为问题陈述的算法。
了解 Twitter 网页
在提取数据之前,您需要了解网页如何标记其数据。如果您对 HTML 和 CSS 的基础知识有很好的了解,这会很有帮助。
请按照以下步骤了解 Twitter 如何表示热门主题标签及其 URL:
- 访问 Twitter 的趋势页面。您还可以导航至 Twitter.com → 探索 → 趋势 进行查看。
- 使用 Chrome 开发工具检查主列。转到菜单(3个点)>更多工具>开发人员工具并将元素选择器工具悬停在趋势上区域。
趋势时间线是一个带有 aria-label 属性的 div,其值为 “时间线:探索”。
'//div[@aria-label="Timeline: Explore"]/div[1]/div[3]/div[1]/div[1]/div[1]/div[1]/div[2]/span[1]'//div[@aria-label="Timeline: Explore"]/div[1]/div[{i}]/div[1]/div[1]/div[1]/div[1]/div[2]/span[1]'单击任何主题标签即可了解其页面的 URL。如果比较 URL,您应该注意到只有查询参数发生更改以匹配主题标签的名称。您可以使用此见解来构建 URL,而无需实际提取它们。
了解并安装所需的模块和工具
该项目使用以下 Python 模块和工具:
1. 熊猫模块
您可以使用 Pandas DataFrame 类以表格格式存储主题标签及其各自的链接。当您将这些内容添加到可以外部共享的 CSV 文件时,这将很有帮助。
2. 时间模块
使用 Time 模块向 Python 程序添加延迟,以允许页面内容完全加载。本示例使用 15 秒的延迟,但您可以根据自己的情况进行试验并选择合适的延迟。
3. 硒模块
Selenium 可以自动化与网络交互的过程。您可以使用它来控制 Web 浏览器的实例、打开趋势页面并向下滚动。要在 Python 环境中安装 Selenium,请打开终端并执行 pip install selenium。
4. 网络驱动程序
将 Web 驱动程序与 Selenium 结合使用来与浏览器交互。根据您想要自动化的浏览器,有不同的网络驱动程序可用。对于此版本,请使用流行的 Google Chrome 浏览器。要安装 Chrome 的网络驱动程序:
通过访问菜单(3个点)>帮助>关于 Google Chrome来检查您所使用的浏览器版本强>。
注意浏览器的版本;在本例中,它是 106.0.5249.62。
转到您的终端并输入pip install chromedriver-binary==version_number:
pip install chromedriver-binary==106.0.5249.62
如何构建 Twitter 抓取工具
按照以下步骤构建您的程序并获取实时趋势标签。您可以在此 GitHub 存储库中找到完整的源代码。
-
将所需模块导入Python环境。
# importing the required modules from selenium import webdriver from selenium.webdriver.common.by import By import chromedriver_binary import time import pandas as pd 创建一个对象来初始化 ChromeDriver 并使用 webdriver.Chrome() 函数启动 Google Chrome 浏览器。
# open google chrome browser browser = webdriver.Chrome()通过将 URL 传递给 get() 函数来打开 Twitter 的趋势页面。
# open the trending page of Twitter browser.get('https://twitter.com/explore/tabs/trending')应用延迟以便完全加载页面内容。
# delay for page content loading time.sleep(15)创建一个空列表来存储主题标签,并声明一个从 3 运行到 13 的循环,以匹配之前 XPath 表达式中的变量。
# initialize list to store trending topics and hashtags trending_topic_content=[] # collect topics and hashtags on Twitter's trending page for i in range(3,13):使用 find_element() 函数并传递 XPath 选择器来获取 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)创建一个空列表来存储所有 URL,并声明一个遍历所有主题标签的循环。
# create URLs using the hashtags collected urls=[] for i in trending_topic_content: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)创建一个键值对字典,其中键作为主题标签,值作为其 URL。
# create a dictionary that has both the hashtag and the URLs dic={'HashTag':trending_topic_content,'URL':urls}将非结构化字典转换为表格 DataFrame。
# convert the dictionary to a dataframe in pandas df=pd.DataFrame(dic) print(df)将 DataFrame 保存到 CSV 文件,您可以在 Microsoft Excel 中查看该文件或进一步处理。
# convert the dataframe into Comma Separated Value format with no serial numbers df.to_csv("Twitter_HashTags.csv",index=False)
使用网页抓取获得宝贵的见解
网络抓取是一种获取所需数据并对其进行分析以做出决策的强大方法。 Beautiful Soup 是一个令人印象深刻的库,您可以安装它并使用它来使用 Python 从任何 HTML 或 XML 文件中抓取数据。
有了这个,您可以通过互联网获取实时新闻标题、产品价格、体育比分、股票价值等。







