如何抓取 Twitter (X.com) — 分步指南

2025/10/30

如何抓取 Twitter (X.com) — 分步指南
Palina Zabela's Profile Image
Palina Zabela

Content Manager, Octo Browser

在X.com上,您可以通过用户帖子跟踪市场趋势和消费者行为。但平台的官方API有其限制,因此网页抓取专家通过浏览器自动化从社交媒体平台收集信息。在本文中,我们将解释如何使用Playwright库和无头浏览器抓取X.com上的推文、个人资料、搜索结果、回复和时间轴。

在X.com上,您可以通过用户帖子跟踪市场趋势和消费者行为。但平台的官方API有其限制,因此网页抓取专家通过浏览器自动化从社交媒体平台收集信息。在本文中,我们将解释如何使用Playwright库和无头浏览器抓取X.com上的推文、个人资料、搜索结果、回复和时间轴。

内容

为什么抓取推特 (X.com)

推特是用户行为、观点和当前趋势的数据来源。通过抓取X.com,您可以:

  • 分析您的竞争对手。从推特上收集竞争对手的资料数据,以实时监控他们的营销策略、产品公告和受众反应。

  • 发现趋势。收集推特上的热门标签,以便快速调整您的内容或产品迎合新趋势。

  • 研究消费者。抓取推特上的评论、品牌提及和回复,帮助您了解客户的痛点和期望,从而改进产品并增加销售。

法律和道德方面

X.com禁止未经许可抓取其数据。违反这些规则可能导致账户和IP封禁。然而,判例法—尤其是在美国—承认抓取公开可用数据是合法的。例如,在2022年,美国第九巡回上诉法院确认,抓取公开可访问的信息并不违反《计算机欺诈和滥用法案》(CFAA)。

为了进一步保护自己,最好:

  • 仅抓取公开数据;

  • 避免抓取推特上的私人资料和直接信息;

  • 在抓取时尊重允许的请求速率,以免过载X.com的服务器。

绕开X.com的封锁

X.com的安全系统分析用户行为的众多参数。因此,为了最大限度地保护免受网络抓取的封禁,请使用所有可用措施:

  1. 在抓取时合理地暂停请求。不仅要避免过载X.com的服务器,还要引入随机间隔,让请求看起来像是人类活动。

  2. 使用高质量代理。安全系统可能会阻止发送过多请求的某个IP地址。为了安全抓取,请使用代理并限制单个地址的请求数。

  3. 使用反检测浏览器。推特不仅通过行为和IP地址识别用户,还通过数字指纹识别,即设备参数的独特组合。指纹包括许多设置:操作系统版本、地理位置、时区和语言、已安装的字体和扩展程序等。因此,在抓取时,将代理与反检测浏览器结合使用。在这样的浏览器中,您可以创建具有不同指纹的虚拟配置文件,每个配置文件在X.com上看起来像是一个独立用户,而不是一个单一的抓取机器人。

重要提示:为每个X.com账户使用单独的虚拟配置文件,并将不同的代理与不同的IP连接到每个账户。这防止推特的安全系统通过相同的设备设置或IP链接您的账户,并因抓取而阻止您。

  1. 正确准备您的配置文件。要让推特信任您的账户,它们需要cookie。如果您从头创建一个新账户,请使用Octo Browser的Cookie机器人准备虚拟配置文件。如果您使用预先存在的X.com账户进行抓取,请从先前的浏览器导出cookie并导入Octo中

如何抓取推文

要从X.com抓取帖子,您需要通过浏览器以无头模式加载网页(例如,Octo)并拦截后台请求。以下是使用开源Playwright库进行推文抓取的样子:

from playwright.sync_api import sync_playwright

def scrape_tweet(url: str) -> dict:

"""

Scrape a single tweet page for Tweet thread e.g.:

https://twitter.com/Scrapfly_dev/status/1667013143904567296

Return parent tweet, reply tweets and recommended tweets

"""

_xhr_calls = []

def intercept_response(response):

"""capture all background requests and save them"""

# we can extract details from background requests

if response.request.resource_type == "xhr":

_xhr_calls.append(response)

return response

with sync_playwright() as pw:

browser = pw.chromium.launch(headless=False)

context = browser.new_context(viewport={"width": 1920, "height": 1080})

page = context.new_page()

# enable background request intercepting:

page.on("response", intercept_response)

# go to url and wait for the page to load

page.goto(url)

page.wait_for_selector("[data-testid='tweet']")

# find all tweet background requests:

tweet_calls = [f for f in _xhr_calls if "TweetResultByRestId" in f.url]

for xhr in tweet_calls:

data = xhr.json()

return data['data']['tweetResult']['result']

if __name__ == "__main__": print(scrape_tweet("https://twitter.com/Scrapfly_dev/status/1664267318053179398"))

该脚本通过无头浏览器加载一条推文并拦截后台请求。然后过滤包含推文数据的请求。

注意:抓取时必须等到推文在HTML页面上出现——这表示后台请求已完成。

如何抓取资料

您可以以与推文相同的方式抓取X.com用户资料:在无头浏览器中捕获后台请求。使用以下算法获取资料元数据:

  1. 登录推特账户。

  2. 打开X.com上的用户页面。

  3. 提取名称、简介/描述、粉丝数量和账户创建日期。

  4. 添加延迟,以免推特将抓取器标记为可疑活动。

如何抓取搜索、回复和时间线

使用Playwright库您可以抓取甚至X.com的动态部分:

  • 搜索。脚本模拟在推特的搜索栏中输入查询并按下回车。然后它滚动并提取数据,以抓取尽可能多的与关键字相关的帖子。

  • 回复。要获取特定帖子的回复,Playwright打开该帖子的页面。脚本聚焦于评论区域,滚动以加载完整的线程,并抓取回复文本和作者名称。

  • 时间线。脚本打开资料的主页并循环滚动,以抓取用户的所有最近帖子。

数据存储和导出

抓取后,结构化收集的数据。Playwright从HTML中提取数据,因此输出将是一个结构化记录列表(例如,Python字典)。您可以将其导出为CSV或Excel等表格格式,以便稍后加载到分析工具中。

分析收集的数据

一旦数据被抓取,您需要对其进行分析。根据您的目标,您可以使用不同的方法:

  • 情感分析。评估帖子和回复的情感倾向,以了解用户对您的产品或竞争对手的感觉——积极的、消极的或中立的。

  • 聚类。按主题对收集的帖子进行分组。对于一家产品公司,聚类可能如下所示:“交货投诉”,“积极的产品评价”,“功能请求”。

  • 影响者识别。找到拥有大量粉丝和高参与度的用户,他们讨论您的行业。然后您可以联系他们进行合作,潜在地使他们成为品牌倡导者。

常见问题

抓取推特 (X.com)合法吗?

抓取公开可用数据本身并非非法。然而,X.com禁止抓取。技术上您可以抓取数据,但推特有权因违反平台规则而封锁您的账户或IP地址。

可以使用Python抓取推特吗?

可以,Python是一种用于网络抓取自动化的流行语言。您可以使用Playwright之类的库来抓取,这些库可以帮助绕过官方Twitter API的限制。

如何在不被屏蔽的情况下抓取推特?

为了降低因网络抓取而被禁止的风险,您应该:

  • 使用代理。

  • 使用反检测浏览器(例如,Octo Browser)创建具有不同数字指纹的配置文件,以便X.com的安全系统无法将您的活动追溯到单个用户。

  • 在请求之间添加随机的、类似人类的延迟。

  • 在反检测浏览器中保存cookie。

为什么抓取推特 (X.com)

推特是用户行为、观点和当前趋势的数据来源。通过抓取X.com,您可以:

  • 分析您的竞争对手。从推特上收集竞争对手的资料数据,以实时监控他们的营销策略、产品公告和受众反应。

  • 发现趋势。收集推特上的热门标签,以便快速调整您的内容或产品迎合新趋势。

  • 研究消费者。抓取推特上的评论、品牌提及和回复,帮助您了解客户的痛点和期望,从而改进产品并增加销售。

法律和道德方面

X.com禁止未经许可抓取其数据。违反这些规则可能导致账户和IP封禁。然而,判例法—尤其是在美国—承认抓取公开可用数据是合法的。例如,在2022年,美国第九巡回上诉法院确认,抓取公开可访问的信息并不违反《计算机欺诈和滥用法案》(CFAA)。

为了进一步保护自己,最好:

  • 仅抓取公开数据;

  • 避免抓取推特上的私人资料和直接信息;

  • 在抓取时尊重允许的请求速率,以免过载X.com的服务器。

绕开X.com的封锁

X.com的安全系统分析用户行为的众多参数。因此,为了最大限度地保护免受网络抓取的封禁,请使用所有可用措施:

  1. 在抓取时合理地暂停请求。不仅要避免过载X.com的服务器,还要引入随机间隔,让请求看起来像是人类活动。

  2. 使用高质量代理。安全系统可能会阻止发送过多请求的某个IP地址。为了安全抓取,请使用代理并限制单个地址的请求数。

  3. 使用反检测浏览器。推特不仅通过行为和IP地址识别用户,还通过数字指纹识别,即设备参数的独特组合。指纹包括许多设置:操作系统版本、地理位置、时区和语言、已安装的字体和扩展程序等。因此,在抓取时,将代理与反检测浏览器结合使用。在这样的浏览器中,您可以创建具有不同指纹的虚拟配置文件,每个配置文件在X.com上看起来像是一个独立用户,而不是一个单一的抓取机器人。

重要提示:为每个X.com账户使用单独的虚拟配置文件,并将不同的代理与不同的IP连接到每个账户。这防止推特的安全系统通过相同的设备设置或IP链接您的账户,并因抓取而阻止您。

  1. 正确准备您的配置文件。要让推特信任您的账户,它们需要cookie。如果您从头创建一个新账户,请使用Octo Browser的Cookie机器人准备虚拟配置文件。如果您使用预先存在的X.com账户进行抓取,请从先前的浏览器导出cookie并导入Octo中

如何抓取推文

要从X.com抓取帖子,您需要通过浏览器以无头模式加载网页(例如,Octo)并拦截后台请求。以下是使用开源Playwright库进行推文抓取的样子:

from playwright.sync_api import sync_playwright

def scrape_tweet(url: str) -> dict:

"""

Scrape a single tweet page for Tweet thread e.g.:

https://twitter.com/Scrapfly_dev/status/1667013143904567296

Return parent tweet, reply tweets and recommended tweets

"""

_xhr_calls = []

def intercept_response(response):

"""capture all background requests and save them"""

# we can extract details from background requests

if response.request.resource_type == "xhr":

_xhr_calls.append(response)

return response

with sync_playwright() as pw:

browser = pw.chromium.launch(headless=False)

context = browser.new_context(viewport={"width": 1920, "height": 1080})

page = context.new_page()

# enable background request intercepting:

page.on("response", intercept_response)

# go to url and wait for the page to load

page.goto(url)

page.wait_for_selector("[data-testid='tweet']")

# find all tweet background requests:

tweet_calls = [f for f in _xhr_calls if "TweetResultByRestId" in f.url]

for xhr in tweet_calls:

data = xhr.json()

return data['data']['tweetResult']['result']

if __name__ == "__main__": print(scrape_tweet("https://twitter.com/Scrapfly_dev/status/1664267318053179398"))

该脚本通过无头浏览器加载一条推文并拦截后台请求。然后过滤包含推文数据的请求。

注意:抓取时必须等到推文在HTML页面上出现——这表示后台请求已完成。

如何抓取资料

您可以以与推文相同的方式抓取X.com用户资料:在无头浏览器中捕获后台请求。使用以下算法获取资料元数据:

  1. 登录推特账户。

  2. 打开X.com上的用户页面。

  3. 提取名称、简介/描述、粉丝数量和账户创建日期。

  4. 添加延迟,以免推特将抓取器标记为可疑活动。

如何抓取搜索、回复和时间线

使用Playwright库您可以抓取甚至X.com的动态部分:

  • 搜索。脚本模拟在推特的搜索栏中输入查询并按下回车。然后它滚动并提取数据,以抓取尽可能多的与关键字相关的帖子。

  • 回复。要获取特定帖子的回复,Playwright打开该帖子的页面。脚本聚焦于评论区域,滚动以加载完整的线程,并抓取回复文本和作者名称。

  • 时间线。脚本打开资料的主页并循环滚动,以抓取用户的所有最近帖子。

数据存储和导出

抓取后,结构化收集的数据。Playwright从HTML中提取数据,因此输出将是一个结构化记录列表(例如,Python字典)。您可以将其导出为CSV或Excel等表格格式,以便稍后加载到分析工具中。

分析收集的数据

一旦数据被抓取,您需要对其进行分析。根据您的目标,您可以使用不同的方法:

  • 情感分析。评估帖子和回复的情感倾向,以了解用户对您的产品或竞争对手的感觉——积极的、消极的或中立的。

  • 聚类。按主题对收集的帖子进行分组。对于一家产品公司,聚类可能如下所示:“交货投诉”,“积极的产品评价”,“功能请求”。

  • 影响者识别。找到拥有大量粉丝和高参与度的用户,他们讨论您的行业。然后您可以联系他们进行合作,潜在地使他们成为品牌倡导者。

常见问题

抓取推特 (X.com)合法吗?

抓取公开可用数据本身并非非法。然而,X.com禁止抓取。技术上您可以抓取数据,但推特有权因违反平台规则而封锁您的账户或IP地址。

可以使用Python抓取推特吗?

可以,Python是一种用于网络抓取自动化的流行语言。您可以使用Playwright之类的库来抓取,这些库可以帮助绕过官方Twitter API的限制。

如何在不被屏蔽的情况下抓取推特?

为了降低因网络抓取而被禁止的风险,您应该:

  • 使用代理。

  • 使用反检测浏览器(例如,Octo Browser)创建具有不同数字指纹的配置文件,以便X.com的安全系统无法将您的活动追溯到单个用户。

  • 在请求之间添加随机的、类似人类的延迟。

  • 在反检测浏览器中保存cookie。

随时获取最新的Octo Browser新闻

通过点击按钮,您同意我们的 隐私政策

随时获取最新的Octo Browser新闻

通过点击按钮,您同意我们的 隐私政策

随时获取最新的Octo Browser新闻

通过点击按钮,您同意我们的 隐私政策

立即加入Octo Browser

或者随时联系客户服务,如果您有任何问题。

立即加入Octo Browser

或者随时联系客户服务,如果您有任何问题。

立即加入Octo Browser

或者随时联系客户服务,如果您有任何问题。

©

2025年

Octo Browser

©

2025年

Octo Browser

©

2025年

Octo Browser