Python开发:不借助Twitter API与Selenium,通过URL校验推文存在性
核心需求
- 持有同一Twitter账号下的一批推文URL,需要逐一校验这些推文当前是否仍可访问
- 推文失效判定规则:匹配到以下两类Twitter返回的典型错误提示中任意一类,即可判定推文失效:
或This Tweet is from an account that no longer exists. Learn moreSorry that page doesn't exist!
已尝试的实现方案
通过Twint库爬取目标账号的全量推文,将本地待校验的推文链接与Twint爬取结果做匹配,以此判断对应推文是否存在。当前使用的Twint爬取函数实现如下:
def get_tweets(username): c = twint.Config() c.Username = username tweets = [] c.Store_object = True c.Retweets = True c.Store_object_tweets_list = tweets c.Hide_output = True twint.run.Profile(c) tweets_links = [] for tweet in tweets: tweets_links.append(tweet.link) return tweets_links get_tweets(username)
现有方案的缺陷
该方法爬取的推文存在历史内容截断问题:测试账号GideonCRozner的爬取结果仅更新至2020年6月24日,无法覆盖本地存储的、发布时间早于该节点的推文URL,无法完成这类旧链接的存在性校验。
当前临时方案的不足
临时引入Selenium逐页请求未被Twint覆盖的推文链接完成校验,但Selenium运行效率过低,无法适配批量校验的场景需求。
期望的解决方向
方案需满足两个基础约束:无需依赖Selenium、无需调用Twitter官方API,可从以下两个方向任选其一实现:
- 能够完整爬取指定账号的全量历史推文
- 能够通过单条推文URL快速完成存在性校验
内容的提问来源于stack exchange,提问作者jalil_BM
相关产品推荐
相关产品推荐

