
无需身份验证。无需 API。无限制。
Twint 是一个用 Python 编写的先进 Twitter 抓取工具,允许在不使用 Twitter API 的情况下抓取 Twitter 个人资料中的推文。
Twint 利用 Twitter 的搜索运算符,让您可以抓取特定用户的推文、抓取与特定主题、话题标签和趋势相关的推文,或者从推文中筛选出敏感信息,如电子邮件和电话号码。我发现这非常有用,而且您也可以发挥创意,实现更多功能。
Twint 还会向 Twitter 发送特殊查询,使您能够无需任何身份验证、API、Selenium 或浏览器模拟,即可抓取 Twitter 用户的关注者、用户点赞的推文以及他们关注的人。
使用 Twint 相较于 Twitter API 的一些优势:
Twitter 在浏览用户时间线时限制了滚动次数。这意味着使用 .Profile 或 .Favorites 大约只能获取 3200 条推文。
Git 方式:
git clone --depth=1 https://github.com/twintproject/twint.git
cd twint
pip3 install . -r requirements.txt
Pip 方式:
pip3 install twint
或
pip3 install --user --upgrade git+https://github.com/twintproject/twint.git@origin/master#egg=twint
Pipenv 方式:
pipenv install git+https://github.com/twintproject/twint.git#egg=twint
新增:Dockerfile
注意到很多人遇到安装问题(包括我自己)。在我排查问题期间,请暂时使用 Dockerfile。
以下是一些简单示例,帮助您理解基本用法:
twint -u username - 抓取 用户 的所有推文(不包括 转推,但包括 回复)。twint -u username -s pineapple - 抓取该 用户 时间线中包含 pineapple 的所有推文。twint -s pineapple - 收集所有人的推文中包含 pineapple 的所有推文。twint -u username --year 2014 - 收集 2014 年之前 发布的推文。twint -u username --since "2015-12-20 20:30:15" - 收集自 2015-12-20 20:30:15 以来发布的推文。twint -u username --since 2015-12-20 - 收集自 2015-12-20 00:00:00 以来发布的推文。twint -u username -o file.txt - 抓取推文并保存到 file.txt。twint -u username -o file.csv --csv - 抓取推文并保存为 csv 文件。twint -u username --email --phone - 显示可能包含电话号码或电子邮件地址的推文。twint -s "Donald Trump" --verified - 显示经过验证的用户发布的关于 Donald Trump 的推文。twint -g="48.880048,2.385939,1km" -o file.csv --csv - 抓取巴黎某地点周围 1 公里半径内的推文并导出为 csv 文件。更多命令和选项的详细信息请参阅 Wiki
Twint 现在可以作为模块使用,并支持自定义格式。更多详情请参阅 Wiki
import twint
# 配置
c = twint.Config()
c.Username = "realDonaldTrump"
c.Search = "great"
# 运行
twint.run.Search(c)
输出
955511208597184512 2018-01-22 18:43:19 GMT <now> pineapples are the best fruit
import twint
c = twint.Config()
c.Username = "noneprivacy"
c.Custom["tweet"] = ["id"]
c.Custom["user"] = ["bio"]
c.Limit = 10
c.Store_csv = True
c.Output = "none"
twint.run.Search(c)
使用 Twint 设置 Elasticsearch 的详细信息请参阅 Wiki。

我们正在开发一款 Twint 桌面应用。

我尝试抓取某个用户的推文,我知道它们存在,但获取不到。
Twitter 可能会对账户进行影子封禁,这意味着他们的推文将无法通过搜索获取。解决方法:如果使用 CLI,请传递 --profile-full;如果以模块方式使用 Twint,请添加 config.Profile_full = True。请注意,此过程会相当缓慢。
仅获取关注者用户名/关注用户名
twint -u username --followers
twint -u username --following
获取关注者/关注用户的用户信息
twint -u username --followers --user-full
twint -u username --following --user-full
仅获取用户的用户信息
twint -u username --user-full
从用户列表中获取用户的用户信息
twint --userlist inputlist --user-full
获取 100 条英文推文并翻译成意大利语
twint -u noneprivacy --csv --output none.csv --lang en --translate --translate-dest it --limit 100
或
import twint
c = twint.Config()
c.Username = "noneprivacy"
c.Limit = 100
c.Store_csv = True
c.Output = "none.csv"
c.Lang = "en"
c.Translate = True
c.TranslateDest = "it"
twint.run.Search(c)
注意事项:
如果您有任何问题、想参与讨论或需要额外帮助,欢迎加入我们在 OSINT 团队 的 Twint 专用频道。
twint -u username -es localhost:9200 - 将推文输出到 Elasticsearch。twint -u username -o file.json --json - 抓取推文并保存为 json 文件。twint -u username --database tweets.db - 将推文保存到 SQLite 数据库。twint -u username --followers - 抓取 Twitter 用户的关注者。twint -u username --following - 抓取 Twitter 用户关注的人。twint -u username --favorites - 收集用户点赞过的所有推文(大约获取 3200 条推文)。twint -u username --following --user-full - 收集某人所关注用户的完整用户信息。twint -u username --timeline - 使用高效方法从用户个人资料中收集推文(大约获取 3200 条推文,包括 转推 和 回复)。twint -u username --retweets - 使用快速方法从用户个人资料中收集最近 900 条推文(包括转推)。twint -u username --resume resume_file.txt - 从上次保存的滚动 ID 恢复搜索。