【问题标题】:Building script to access public Twitter data, without authentication构建脚本以访问公共 Twitter 数据,无需身份验证
【发布时间】:2018-05-22 04:07:05
【问题描述】:

我想用 Python 编写一个脚本来读取公共 Twitter 个人资料。具体来说,我想检查带有图像的推文,并下载这些图像(最终,我想将其添加为 cron 作业)。我正在研究 tweepy 作为 Twitter API 包装器。但是,据我了解,即使是访问公共数据的操作,Twitter API 也需要身份验证 - 是否正确?

由于我只需要访问一个公共用户时间线,因此通过繁琐的身份验证(然后将这些凭据放在我的计算机上,我不确定表单的安全性)似乎有点过头了。

是否有其他解决方案(尤其是基于 Python)来读取公共 Twitter 数据?

【问题讨论】:

  • Twitter 建议我们创建一个应用程序,该应用程序具有用于身份验证的用户名密码,然后使用该应用程序我们可以查询 Twitter API 服务以获取所需的数据,如果 twitter 不强制执行此用户名/密码约束然后人们可以简单地向他们的服务器发送垃圾邮件,身份不明确。所以这个强制不是来自Tweepy,而是推荐的做事方式。但是,如果您愿意,您可以绕过这个并编写一个简单的网络抓取工具,但我建议您创建一个 Twitter 应用程序。
  • 我知道这是 Twitter 的要求,而不是 Tweepy 的要求。感谢您澄清其背后的一些原因。也许我会考虑以正确的方式做这件事,因为通过刮掉裸露的 html 来重新发明轮子听起来也没有那么吸引人。
  • @ZdaR 请写下您的评论作为答案。在提出这个问题之前,您对 Twitter 政策的解释几乎就是我所寻找的。​​span>

标签: python twitter


【解决方案1】:

是的,Twitter 确实需要身份验证才能访问用户的任何公共/私人数据。您需要在 Twitter 上创建一个应用程序来访问数据。该应用程序需要检查特定客户提出的请求数量等,以防止任何滥用。此身份验证也是其他 API 提供程序遵循的一般过程,这是唯一推荐的方式。

创建 Twitter 应用的另一个好处是其他用户可以授予您应用的权限,然后您也可以访问他们的私人数据,例如 DM 等。

另一种方法是网络抓取,但我认为这是不道德的,因为 twitter 已经提供了它的 API。此外,每次 Twitter 开发人员对前端进行一些更改时,您都需要更新您的抓取脚本。

【讨论】:

    【解决方案2】:

    您始终可以创建自己的数据抓取工具。 BeautifulSoup 很受欢迎。例如这样的:

    from urllib.request import urlopen
    
    html = urlopen('https://twitter.com/Microsoft')
    soup = BeautifulSoup(html.read(),'html.parser');
    print(soup)
    
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.1//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile11.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta content="True" name="HandheldFriendly"/> ......................
    

    【讨论】:

    • 这是一个让我开始构建网络爬虫的好答案。但是,接受的答案解释了身份验证要求背后的原因以及为什么网络爬虫替代方案不是很好 - 虽然它可能看起来比我原来的问题次要,但确实是我正在寻找的答案。希望我能同时接受。
    • 是的,如果你正在寻找一次性的东西,scraper 可以工作,但从长远来看,你需要修改一些东西。
    猜你喜欢
    • 2017-10-31
    • 2017-01-12
    • 2016-11-10
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 2019-02-12
    • 2014-02-23
    • 2011-04-25
    相关资源
    最近更新 更多