LinkedIn Twitter爬虫研究

TLDR

Twitter 和 LinkedIn 都需要登陆账号才能抓取到内容,不管你使用无头浏览器还是非公开的 API.

Detail

背景

项目需要抓取用户在 Twitter 和 LinkedIn 上发布的内容,但官方 API 无法满足需求。Twitter API 似乎只能获取最近 7 天的推文,而 LinkedIn 根本没有提供获取用户内容的 API。因此,需要研究其他抓取方式。

Twitter

尝试过用无头浏览器在不登录的情况下抓取推文,发现 Twitter 对不同的账号有不同的处理方式:

  • 有些账号在不登录的情况下可以获取到最新的推文,比如 nasa
  • 一些账号只能显示老的推文
  • 剩余部分的账号不登录无法查看推文

用无头浏览器的问题是你需要去解析 dom 来提取推文,比较麻烦。后来发现 GitHub 上有个名叫 trevorhobenshield/twitter-api-client 的库使用了未公开的 API 抓取推文:

APIFY 上有个类似的 actor 感觉也是用了这个库:

使用这个库需要登陆 Twitter 账号,有抓取频率限制,如果超出了限额会返回 429 状态码,如果在 serverless 那种经常变更 ip 的环境使用,会触发 Twitter 的安全策略,需要你手动登录账号输入验证码来解锁账号。

还有一个名叫 social tools 的第三方网站提供 API 来抓取推文,没有用过所以这里不做评价。

Twitter 对创建账号也有限制,需要邮箱认证和验证码,感觉验证码的问题可以用 AI 来解决。

说白了,就是得刷号才能抓到大量推文。

LinkedIn

LinkedIn 官方曾经提供过 API 来获取用户发布的文章,但是后来把这个接口给删除了,估计是担心被人抓取后用来训练 AI。

LinkedIn 也有那种使用非公开 api 的库,名叫 tomquirk/linkedin-api

同样也需要登录账号,LinkedIn 的安全策略比 Twitter 严格的多,手机号码验证,图形验证码。如果你的账号被锁定,LinkedIn 还需要你上传身份证才能解锁账号。

LinkedIn 官方提供 API,可在用户授权后获取用户管理的公司发布的文章