如果你玩过社交媒体数据,你可能会接触到一个名为 "snscrape "的工具。
作为一个经常使用各种软件工具的人,我发现 snscrape 是完成某些任务的好工具,尤其是在以下情况下 结合代理.
因此,让我们来分析一下 snscrape 是什么、它是如何工作的,以及为什么它能改变你的数据收集工作流程。
简而言之:
- Snscrape 是一款 Python 工具,用于在不使用 API 的情况下刮擦社交媒体。
- 它与 推特/X, Facebook, Instagram, Reddit等等。
- 您可以提取推文、用户资料和标签,并将其保存为 CSV 格式。
- 对于大规模刮擦,可使用代理服务器来避免阻塞和速率限制。

目录
- 什么是 Snscrape?
- Snscrape 如何工作?
- 如何使用 Snscrape
- 使用 Snscrape 可以从 Twitter 抓取哪些数据?
- Snscrape 使用案例
- 如何为 Snscrape 添加代理
- 为什么要使用 Snscrape 代理?
- Snscrape 的替代品
- Snscrape 合法吗?
- 有关 Snscrape 的常见问题
- 最后的话
1.什么是 Snscrape?

Snscrape 是一个 Python 库,可让您从 X (Twitter)、Facebook 和 Instagram 等社交媒体平台抓取数据。
与许多其他刮擦工具不同,snscrape 不需要 API 密钥,这使得它可以被更多用户使用,包括那些可能不具备使用 API 的技术诀窍的用户。
Snscrape 的优点
Snscrape 有几个值得注意的优点:
- 无需 API 密钥:这是一个重大优势。大多数社交媒体平台都需要 API 密钥才能进行数据搜刮,这对许多用户来说都是个问题。这也是许多人青睐 Snscrape 的原因之一。
- 灵活性:您可以根据需要定制搜索查询,使其既广泛又具体。这种灵活性对于需要收集细微数据的研究至关重要。
- 易于使用:对于熟悉 Python 的用户来说,snscrape 非常友好。其简单明了的命令和结构使其很容易集成到您的数据收集工作流程中。
2.Snscrape 如何工作?
使用 snscrape 相对简单,尤其是如果你对 Python 有基本的了解。
该工具通过搜索社交媒体网站上的公开数据来工作。例如,你可以用它来收集包含特定关键词、标签或来自特定用户的推文。
这里有一个简单的例子:
如果您想 搜刮微博 包含标签 #technology,您可以使用 snscrape 编写 Python 脚本来搜索该标签,然后提取相关推文。
以下是 Snscrape 的工作原理:
- Snscrape: 您在电脑上运行 Snscrape,从 X(推特)等平台收集公开帖子。
- 代理: 代理可以隐藏您的 IP 地址,帮助您在搜索时避免被拦截。
- 网络: Snscrape 会向网站发送请求并加载公共数据,如微博。
- 数据 然后,它将数据转换成干净、可读的格式,如 JSON 或 CSV,供您使用。

3.如何使用 Snscrape
要开始使用,您需要在计算机上安装包括 Python 在内的基本设置。然后,您可以使用 Python 的软件包安装程序 pip 安装 snscrape。安装完成后,您就可以开始编写脚本来抓取所需的数据了。
以下是一份简单的指南,帮助您开始使用这一强大的工具。
a.安装
首先,您需要安装 snscrape。打开命令提示符或终端,键入以下命令:
bashCopy 代码
pip install snscrape
此命令使用 Python 的软件包管理器 pip 下载并安装刮板。
b.编写基本脚本
安装后,你就可以开始编写 Python 脚本来抓取数据了。比方说,你想收集带有特定标签的推文。下面是一个基本示例:
import snscrape.modules.twitter as sntwitter # 定义要搜刮的推文数量 max_tweets = 100 # 使用 TwitterSearchScraper 搜刮数据并将推文添加到列表 for i, tweet in enumerate(sntwitter.TwitterSearchScraper('#technology').get_items()): if i > max_tweets: break print(tweet.content)
此脚本将抓取包含标签 #technology 的最新 100 条推文。
c.运行脚本
将脚本保存为 .py 文件,然后使用 Python 运行它。脚本将被执行,你应该会在命令提示符或终端中看到打印出来的推文。
d.如何自定义查询
您可以轻松修改搜索查询。例如,如果你想抓取某个用户的推文,你可以在 TwitterSearchScraper 方法:
sntwitter.TwitterSearchScraper('from:username')
更换 用户名 的 Twitter 句柄。
e.处理数据
抓取的数据可以以各种格式存储。例如,你可能想将推文保存为 CSV 文件,以便于分析。你可以修改脚本,将搜刮到的数据写入文件:
import csv # ... [之前的代码] # 打开/创建一个文件以向其中添加数据 csvFile = open('scraped_tweets.csv', 'a', newline='', encoding='utf8') # 使用 csv 写入器 csvWriter = csv.writer(csvFile) csvWriter.writerow(['id', 'date', 'tweet']) for i, tweet in enumerate(sntwitter.TwitterSearchScraper('#technology').writerow(['id', 'date', 'tweet']) for i, tweet in enumerate(sntwitter.TwitterSearchScraper('#technology').get_items()): if i > max_tweets: break csvWriter.writerow([tweet.id, tweet.date, tweet.content]) csvFile.close()
该脚本会将推文 ID、日期和内容保存到 CSV 文件中,文件名为 scraped_tweets.csv.
4.使用 Snscrape 可以从 Twitter 抓取哪些数据?
Snscrape 可以帮助你从 X(Twitter)中提取各种数据。以下是使用 snscrape 可以抓取的各种数据点的明细:
a.推文
snscrape 的主要用途是收集推文。这包括
- 鸣叫内容:推文的实际文本。
- 鸣叫 ID:每条鸣叫的唯一标识符。
- 日期和时间:发布推文的时间。
- 网址:推文中包含的任何链接。
b.用户信息
通过 Snscrape,您可以收集 Twitter 用户的信息,例如
- 用户名:用户的 Twitter 账号。
- 用户 ID:每个用户的唯一标识符。
- 简介说明:用户的简介或个人资料描述。
- 地点:用户在个人资料中提供的位置(如有)。
c.参与指标
虽然 snscrape 不能直接获取点赞或转发等参与度指标,但你仍然可以收集:
- 转发次数:一条推文被转发的次数(针对某些推文)。
- 答复数:对某条推文的回复数量(针对某些推文)。
d.标签和提及
Snscrape 可提取推文中的特定元素,包括
- 标签:推文中使用的任何标签。
- 提及:推文中提到的其他 X(推特)账户的用户名。
e.媒体内容
如果一条推文包含媒体,snscrape 可以帮您识别:
- 媒体 URL:推文所附图片或视频的链接。
f.高级搜索查询
Snscrape 能够处理高级搜索查询,允许您根据以下条件搜索推文:
- 关键词:包含特定单词或短语的推文。
- 日期范围:在规定时间内发布的微博。
- 地理位置:来自特定地理位置的推文(如果有位置数据)。
每条推文都包括以下字段
本我:唯一推文 ID日期:推文发布时间内容:推文全文user.username:谁发布的转发次数,likeCount等等。
g.主题和对话数据
您还可以使用 snscrape 来跟踪对话线程,提取内容:
- 对话式推文:回复和引用推文,让您可以跟踪对话。
5.Snscrape 用例:从简单到高级
Snscrape 的应用范围非常广泛。以下是人们如何使用它--从日常刮擦到更先进的自动设置。
a.日常 Snscrape 用例
以下是用户利用 snscrape 执行一次性任务或小规模项目的最常见方式:
- 市场调研:抓取对产品、品牌或趋势的提及,实时了解人们是如何谈论这些产品、品牌或趋势的。
- 学术研究:为政治言论、网络行为或舆论研究收集数据集。
您不需要大量的设置,只需要一个 Python 脚本和一个明确的搜索查询。
b.使用 Cronjobs 自动抓取
如果要连续收集数据(每天、每小时或每周),可以使用 cronjobs(Linux/macOS)或 Windows 任务调度程序对 snscrape 脚本进行调度。
这非常适合捕捉每日或每小时的提及率,或建立时间序列数据以了解趋势或情感。
| 专业建议 如果要避免数据覆盖或服务器阻塞,请确保脚本轮换文件名并处理速率限制。 |
c.以地理位置为目标的刮擦以获得本地洞察力
需要基于位置的数据?Snscrape 支持使用以下地理过滤器 "附近:" 和 "内:" 在您的查询中。
例如
|
1 |
洪水 附近:"新奥尔良" 内:15 公里 |
将其用于地区灾难响应监测或特定城市的品牌情感或提及。
您甚至可以将其与 因为 和 直到: 以获取特定日期的数据。
d.线程跟踪与数据科学管道
对于更复杂的分析,经常使用 snscrape 来进行:
- 抓取整个对话线程 (包括答复和引语)
- 建立标签数据集 用于 NLP、主题建模或机器学习
- 将推文提取简化为 pandas DataFrame 用于预处理
例如
|
1 |
df = pd.数据帧([;鸣叫.内容 对于 鸣叫 于 鸣叫], 专栏=[;文本]) |
从情感分类到按主题对对话进行聚类,Snscrape 在 数据科学 和研究界。
6.如何为 Snscrape 添加代理
添加 代理 到 snscrape 可以十倍提高你的搜刮能力。它具有匿名性,可绕过速率限制和地理屏蔽内容。
以下是如何将代理与 snscrape 集成的分步指南:
a.选择代理服务
选择可靠的代理服务。有各种 代理类型 包括免费和付费服务。后者一般具有更好的可靠性和速度。我建议在使用 Snscrap 时使用以下代理类型。
b.获取代理信息
选择代理服务后,收集必要的信息:代理服务器地址、端口号以及用户名和密码(如适用)。
| 🚨 请注意 Snscrape 本身不支持会话注入,因此代理的使用是通过请求会话对象间接进行的。 |
c.配置 Python 脚本
接下来,您需要修改 Python 脚本,以便通过代理路由 snscrape 请求。
下面举例说明如何做到这一点:
import snscrape.modules.twitter as sntwitter import requests # Proxy 配置 proxies = { 'http':http://username:password@proxyserver:port', 'https': 'https://username:password@proxyserver:port', }# 创建会话并配置它以使用代理 session = requests.Session() session.proxies.update(proxies) # 在会话中使用 snscrape for tweet in sntwitter.TwitterSearchScraper('keyword', session=session).get_items(): print(tweet.content)
更换 用户名, 暗号, 代理服务器,和 港 并提供您的代理详情。请注意 关键词 应替换为搜索词。
7.为什么要在 Snscrape 中使用代理?
- 绕过速率限制:代理可以通过在不同的 IP 地址上分发请求来避免达到 X (Twitter) 的速率限制。
- 避免 IP 禁止:经常从同一 IP 进行刮擦可能会导致封禁。代理可通过以下方式降低这一风险 旋转您的 IP 地址.
- 访问受地域限制的内容:代理可以提供来自不同地点的 IP 地址,允许访问特定地区的内容。
- 匿名和隐私:使用代理服务器可以隐藏您的真实 IP 地址,从而提高您的隐私保护并降低被跟踪的风险。
- 提高性能:代理可以加快数据检索速度,并通过分散负载降低服务器超载风险。
8.Snscrape 的替代品
虽然 snscrape 是一款功能强大的社交媒体数据搜刮工具,但在某些情况下,你可能需要一款替代工具(最佳网络搜刮工具)。无论是由于不同的功能要求、平台支持还是易用性,查看其他工具可能会有所帮助。下面是一些值得注意的 snscrape 替代工具:
| 工具 | 最适合 | 无 API? | 需要编码吗? |
| Snscrape | Twitter/X 搜刮 | ✅ | ✅ |
| Twint | 大型 Twitter 数据集 | ✅ | ✅ |
| 废料 | 一般网站搜索 | ❌ | ✅ |
| Octoparse | 基于图形用户界面的搜刮(无需编码) | ✅ | ❌ |
| ParseHub | 复杂页面(JS/AJAX 任务繁重) | ✅ | ❌ |
a.捻线
Twint 是另一个流行的 Python 库,用于 搜刮 Twitter 数据。它以无需 Twitter API 或任何身份验证就能抓取大量推文而闻名。Twint 可以获取各种信息,包括推文、关注者、点赞等。对于那些需要从 Twitter 收集大量数据集的人来说,它尤其有用。
b.废料
废料 是更一般的 网络搜刮 框架。虽然它不是专门为社交媒体设计的,但它在从任何网站提取数据方面都非常强大。 Scrapy 适用于复杂的抓取任务,并可对抓取任务进行广泛的自定义和控制。它非常适合拥有更高级编程技能并需要从各种来源抓取数据的用户。
c.美丽汤
BeautifulSoup 是一个用于解析 HTML 和 XML 文档的 Python 库。它通常与请求库结合使用,从网页中抓取数据。虽然与 snscrape 相比,BeautifulSoup 需要更多的设置,但它提供了极大的灵活性,在从网页(不一定是社交媒体平台)中提取数据方面非常强大。
d.Octoparse
Octoparse 是一款用户友好的点击式数据提取工具,无需任何编码技能。它适合非程序员或喜欢图形界面的用户使用。 Octoparse 可以从各种类型的网页(包括社交媒体网站)中处理简单和复杂的数据提取。
e.数据挖掘器
数据挖掘器 是一个 Chrome 浏览器和 Edge 浏览器扩展,可让你从网页中抓取数据并将其转换成各种文件格式,包括 Excel 和 Google Sheets。它对用户非常友好,适合需要在不编写任何代码的情况下快速搜刮数据的用户。
f.ParseHub
ParseHub 是一款可视化数据提取工具,配备机器学习技术,可从网页中识别、提取和转换数据。查看我们的 ParseHub 评论。 它是一款功能强大的工具,可用于搜索复杂的网站,并能处理带有 JavaScript 和 AJAX 的网站。
9.Snscrape 是否合法?
是snscrape 只抓取公开可见的数据如微博、用户名、标签和时间戳。它可以 不 访问私人信息或受登录保护的内容。
尽管如此,合法性并不总是黑白分明的。一般来说,搜索公共数据是合法的、 Twitter/X 和 Instagram 等平台的服务条款可能禁止自动访问.
🛡️ 如何负责任地使用 snscrape:
- 不要在付费墙或登录后进行搜索
- 尊重速率限制和网站完整性
- 经常查看平台的最新政策
了解更多信息: 网络搜索合法吗?
10.关于 Snscrape 的常见问题
Snscrape 是一款基于 Python 的工具,用于从 Twitter(现为 X)、Instagram、Facebook 和 Reddit 等平台获取公共数据。它通常用于收集推文、跟踪标签、监控用户活动,或建立用于研究和数据分析的数据集,所有这些都不需要 API 密钥。
Snscrape 不需要 API 密钥,而且设置步骤或速率限制较少,因此更适合随意或灵活地抓取 Twitter 公共数据。不过,它缺乏 Twitter 官方 API 提供的完整访问权限和结构化端点。因此,这使得该 API 更适合企业或大规模用例。
Snscrape 对 Instagram 和 Facebook 的支持有限。由于频繁的布局变化和反僵尸措施,对这些平台的抓取不太可靠。Snscrape 对 Twitter 和 Reddit 的效果最好,而对 Facebook 和 Instagram 的抓取可能会经常出现问题,需要使用代理等其他工具。
是的,如果您在短时间内搜刮过于激烈或发送过多请求,您可能会被阻止。为避免这种情况,我们强烈建议您实施请求延迟或使用代理服务来轮换 IP 并绕过速率限制。同时保持对公共数据的访问。
11.最后的话
Snscrape 是一款出色的社交媒体数据提取工具。只需掌握基本的 Python 技能,你就能定制自己的数据采集,以满足各种需求。
只要确保正确使用 snscrape 并遵守道德规范,就能避免任何问题。




0评论