snscrape 是社交网络服务 (SNS) 的抓取工具。它会抓取用户个人资料、主题标签或搜索等内容,并返回发现的项目,例如相关帖子。
目前支持以下服务:
snscrape 需要 Python 3.8 或更高版本。安装 snscrape 时会自动安装 Python 包依赖项。
请注意,依赖项之一 lxml 还需要安装 libxml2 和 libxslt。
pip3 install snscrape
如果你想使用开发版本:
pip3 install git+https://github.com/JustAnotherArchivist/snscrape.git
snscrape 的 CLI 的通用语法是:
snscrape [GLOBAL-OPTIONS] SCRAPER-NAME [SCRAPER-OPTIONS] [SCRAPER-ARGUMENTS...]
snscrape --help
和snscrape SCRAPER-NAME --help
提供有关选项和参数的详细信息。 snscrape --help
还列出了所有可用的抓取工具。
CLI 的默认输出是每个结果的 URL。
一些值得注意的全球选项是:
--jsonl
获取 JSONL 格式的输出。这包括 snscrape 提取的所有信息(例如消息内容、日期时间、图像;详细信息因抓取工具而异)。--max-results NUMBER
仅返回前NUMBER
结果。--with-entity
获取正在抓取的实体上的项目,例如用户或频道。并非所有抓取工具都支持此功能。 (您可以将其与--max-results 0
一起使用以仅获取实体信息。) 收集 Jason Scott (@textfiles) 的所有推文:
snscrape twitter-user textfiles
将输出重定向到文件以进行进一步处理通常很有用,例如在 bash 中使用文件名twitter-@textfiles
:
snscrape twitter-user textfiles > twitter-@textfiles
要获取带有 #archiveteam 标签的最新 100 条推文:
snscrape --max-results 100 twitter-hashtag archiveteam
也可以使用 snscrape 作为 Python 中的库,但目前尚未记录。
如果您发现 snscrape 存在问题,请在 https://github.com/JustAnotherArchivist/snscrape/issues 报告。如果您使用 CLI,请使用-vv
运行 snscrape 并将日志输出包含在问题中。如果您使用 snscrape 作为模块,请使用导入import logging; logging.basicConfig(level = logging.DEBUG)
(在使用 snscrape 之前)并将日志输出包含在问题中。
在某些情况下,调试可能需要比日志中提供的信息更多的信息。 CLI 有一个--dump-locals
选项,可以根据重要的日志消息(而不是默认情况下仅在崩溃时)转储 snscrape 中的所有本地变量。请注意,转储文件在某些情况下可能包含敏感信息,并可能被用来识别您的身份(例如,如果服务在其响应中包含您的 IP 地址)。如果您希望私下安排文件传输,只需在问题中提及即可。
该程序是免费软件:您可以根据自由软件基金会发布的 GNU 通用公共许可证(许可证的第 3 版)或(由您选择)任何更高版本的条款重新分发和/或修改它。
分发此程序的目的是希望它有用,但不提供任何保证;甚至没有适销性或特定用途适用性的默示保证。有关更多详细信息,请参阅 GNU 通用公共许可证。
您应该随该程序一起收到 GNU 通用公共许可证的副本。如果没有,请参阅 https://www.gnu.org/licenses/。