twitter-scraper

twitter-scraper

无需API密钥的Twitter数据采集库

这是一个开源的Twitter数据采集库,通过反向工程前端JavaScript API实现功能。支持用户认证、获取推文、搜索内容和用户资料、获取趋势等操作,无速率和使用限制。该库提供高速数据获取,支持HTTP和SOCKS5代理,以及自定义请求延迟设置。适用于Twitter数据分析和研究工作。

Twitter爬虫API认证搜索用户资料Github开源项目

Twitter 爬虫

Go 参考

Twitter 的 API 使用起来很烦人,而且有很多限制—— 幸运的是,他们的前端(JavaScript)有自己的 API,我对其进行了逆向工程。 没有 API 速率限制。不需要令牌。没有限制。速度极快。

您可以使用这个库轻松获取任何用户的推文内容。

安装

go get -u github.com/n0madic/twitter-scraper

使用方法

认证

现在所有方法都需要认证!

登录

err := scraper.Login("用户名", "密码")

使用用户名登录,而不是电子邮件! 但如果您有邮箱确认,请额外使用电子邮件地址:

err := scraper.Login("用户名", "密码", "电子邮件")

如果您启用了两步验证,请使用验证码:

err := scraper.Login("用户名", "密码", "验证码")

可以通过以下方式检查登录状态:

scraper.IsLoggedIn()

注销(清除会话):

scraper.Logout()

如果您想在重启之间保存会话,可以使用 scraper.GetCookies() 保存 cookies,并使用 scraper.SetCookies() 恢复。

例如,保存 cookies:

cookies := scraper.GetCookies() // 序列化为 JSON js, _ := json.Marshal(cookies) // 保存到文件 f, _ = os.Create("cookies.json") f.Write(js)

加载 cookies:

f, _ := os.Open("cookies.json") // 从 JSON 反序列化 var cookies []*http.Cookie json.NewDecoder(f).Decode(&cookies) // 加载 cookies scraper.SetCookies(cookies) // 检查登录状态 scraper.IsLoggedIn()

开放账户

如果您不想使用自己的账户,可以尝试以 Twitter 应用程序身份登录:

err := scraper.LoginOpenAccount()

获取用户推文

package main import ( "context" "fmt" twitterscraper "github.com/n0madic/twitter-scraper" ) func main() { scraper := twitterscraper.New() err := scraper.LoginOpenAccount() if err != nil { panic(err) } for tweet := range scraper.GetTweets(context.Background(), "Twitter", 50) { if tweet.Error != nil { panic(tweet.Error) } fmt.Println(tweet.Text) } }

看起来您最多可以请求 50 条推文。

获取单条推文

package main import ( "fmt" twitterscraper "github.com/n0madic/twitter-scraper" ) func main() { scraper := twitterscraper.New() err := scraper.Login(username, password) if err != nil { panic(err) } tweet, err := scraper.GetTweet("1328684389388185600") if err != nil { panic(err) } fmt.Println(tweet.Text) }

使用标准运算符搜索推文

现在搜索功能仅适用于已认证用户!

包含 "twitter"、"scraper" 和 "data",并过滤掉转发的推文:

package main import ( "context" "fmt" twitterscraper "github.com/n0madic/twitter-scraper" ) func main() { scraper := twitterscraper.New() err := scraper.Login(username, password) if err != nil { panic(err) } for tweet := range scraper.SearchTweets(context.Background(), "twitter scraper data -filter:retweets", 50) { if tweet.Error != nil { panic(tweet.Error) } fmt.Println(tweet.Text) } }

搜索在获取 50 条推文后结束。

查看规则和过滤以构建标准查询。

设置搜索模式

scraper.SetSearchMode(twitterscraper.SearchLatest)

选项:

  • twitterscraper.SearchTop - 默认模式
  • twitterscraper.SearchLatest - 实时模式
  • twitterscraper.SearchPhotos - 图片模式
  • twitterscraper.SearchVideos - 视频模式
  • twitterscraper.SearchUsers - 用户模式

获取个人资料

package main import ( "fmt" twitterscraper "github.com/n0madic/twitter-scraper" ) func main() { scraper := twitterscraper.New() scraper.LoginOpenAccount() profile, err := scraper.GetProfile("Twitter") if err != nil { panic(err) } fmt.Printf("%+v\n", profile) }

按查询搜索个人资料

package main import ( "context" "fmt" twitterscraper "github.com/n0madic/twitter-scraper" ) func main() { scraper := twitterscraper.New().SetSearchMode(twitterscraper.SearchUsers) err := scraper.Login(username, password) if err != nil { panic(err) } for profile := range scraper.SearchProfiles(context.Background(), "Twitter", 50) { if profile.Error != nil { panic(profile.Error) } fmt.Println(profile.Name) } }

获取趋势

package main import ( "fmt" twitterscraper "github.com/n0madic/twitter-scraper" ) func main() { scraper := twitterscraper.New() trends, err := scraper.GetTrends() if err != nil { panic(err) } fmt.Println(trends) }

使用代理

支持 HTTP(s) 和 SOCKS5 代理

使用 HTTP

err := scraper.SetProxy("http://localhost:3128") if err != nil { panic(err) }

使用 SOCKS5

err := scraper.SetProxy("socks5://localhost:1080") if err != nil { panic(err) }

延迟请求

在 API 请求之间添加延迟(以秒为单位)

scraper.WithDelay(5)

加载包含回复的时间线

scraper.WithReplies(true)

编辑推荐精选

音述AI

音述AI

全球首个AI音乐社区

音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。

QoderWork

QoderWork

阿里Qoder团队推出的桌面端AI智能体

QoderWork 是阿里推出的本地优先桌面 AI 智能体,适配 macOS14+/Windows10+,以自然语言交互实现文件管理、数据分析、AI 视觉生成、浏览器自动化等办公任务,自主拆解执行复杂工作流,数据本地运行零上传,技能市场可无限扩展,是高效的 Agentic 生产力办公助手。

lynote.ai

lynote.ai

一站式搞定所有学习需求

不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。

AniShort

AniShort

为AI短剧协作而生

专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。

seedancetwo2.0

seedancetwo2.0

能听懂你表达的视频模型

Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。

nano-banana纳米香蕉中文站

nano-banana纳米香蕉中文站

国内直接访问,限时3折

输入简单文字,生成想要的图片,纳米香蕉中文站基于 Google 模型的 AI 图片生成网站,支持文字生图、图生图。官网价格限时3折活动

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成AI工具AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机AI图像热门
码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

下拉加载更多