Twitter流API演练

介绍

分析推文非常流行,如果您不熟悉该游戏,则想知道如何以编程方式获取它们。 有很多方法可以做到这一点,但是一个很好的开始就是使用Twitter流API,这是一种RESTful服务,允许您根据指定的标准实时提取推文。 对于大多数人来说,这意味着可以访问spritzer,该spritzer在任何给定时刻仅通过Twitter提供的所有推文中的很小一部分。 要访问更多内容,您需要与Twitter保持特殊关系或向Twitter或Gnip等会员付款。 这篇文章提供了使用Twitter流API的基本演练。 您可以根据Twitter提供的文档获得所有这些信息,但这对于
这些服务的新手。 (该职位主要针对本学期我的应用自然语言处理课程的学生的课程项目的第一阶段 )。 您需要拥有一个Twitter帐户才能完成此演练,因此,如果您还没有一个帐户,请立即获取一个。

访问随机的推文样本

首先,尝试使用浏览器通过以下链接提取随机的tweet示例。

您应该会看到越来越多的原始推文流过。 它看起来应该类似于下图。

tweets_sample

这是“原始” tweet(以JSON或JavaScript Object Notation的形式)的示例:

{"text":"#LetsGoMavs til the end RT @dallasmavs: Are You ALL IN?","truncated":false,"retweeted":false,"geo":null,"retweet_count":0,"source":"web","in_reply_to_status_id_str":null,"created_at":"Wed Apr 25 15:47:39 +0000 2012","in_reply_to_user_id_str":null,"id_str":"195177260792299521","coordinates":null,"in_reply_to_user_id":null,"favorited":false,"entities":{"hashtags":[{"text":"LetsGoMavs","indices":[0,11]}],"urls":[],"user_mentions":[{"indices":[27,38],"screen_name":"dallasmavs","id_str":"22185437","name":"Dallas Mavericks","id":22185437}]},"contributors":null,"user":{"show_all_inline_media":true,"statuses_count":3101,"following":null,"profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/285480449\/AAC_med500.jpg","profile_sidebar_border_color":"eeeeee","screen_name":"flyingcape","follow_request_sent":null,"verified":false,"listed_count":2,"profile_use_background_image":true,"time_zone":"Mountain Time (US & Canada)","description":"HUGE ROCKETS & MAVS fan. Lets take down the Lakers & beat up on the East. Inaugural member of the FC Dallas - Fort Worth fan club.","profile_text_color":"333333","default_profile":false,"profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/285480449\/AAC_med500.jpg","created_at":"Thu Oct 21 15:40:21 +0000 2010","is_translator":false,"profile_link_color":"1212cc","followers_count":35,"url":null,"profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1658982184\/204970_10100514487859080_7909803_68807593_5366704_o_normal.jpg","profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/1658982184\/204970_10100514487859080_7909803_68807593_5366704_o_normal.jpg","id_str":"205774740","protected":false,"contributors_enabled":false,"geo_enabled":true,"notifications":null,"profile_background_color":"0a2afa","name":"Mandy","default_profile_image":false,"lang":"en","profile_background_tile":true,"friends_count":48,"location":"ATX \/ FDub. From Galveston !","id":205774740,"utc_offset":-25200,"favourites_count":231,"profile_sidebar_fill_color":"efefef"},"id":195177260792299521,"place":{"bounding_box":{"type":"Polygon","coordinates":[[[-97.938383,30.098659],[-97.56842,30.098659],[-97.56842,30.49685],[-97.938383,30.49685]]]},"country":"United States","url":"http:\/\/api.twitter.com\/1\/geo\/id\/c3f37afa9efcf94b.json","attributes":{},"full_name":"Austin, TX","country_code":"US","name":"Austin","place_type":"city","id":"c3f37afa9efcf94b"},"in_reply_to_screen_name":null,"in_reply_to_status_id":null}

除了推文本身之外,还有很多信息,它们仅仅是“ #LetsGoMavs直到RT @dallasmavs:你都在吗?” 它基本上是从属性到值的映射(并且值本身可以是这样的映射,例如,对于上面的“ user”属性而言)。 您可以查看该推文是否已转推(首次发布该推文时将为零),创建时间,唯一的推文ID,地理坐标(如果有)等。 如果一个属性没有tweet的值,则为“ null”。

我将在以后的教程中返回到tweets的JSON处理,但是您可以通过阅读有关使用Scala一般处理JSON的教程来获得一个良好的开端。

命令行访问推文

假设您能够在浏览器中查看推文成功,那么我们现在可以继续使用命令行。 为此,首先为您的Twitter用户名和密码设置环境变量将很方便。

$ export TWUSER=foo
$ export TWPWD=bar

显然,您需要提供您的Twitter帐户详细信息,而不是foo和bar…

接下来,我们将使用程序curl与API进行交互。 通过下载此博客文章来尝试一下。

$ curl http://bcomposes.wordpress.com/2013/01/25/a-walk-through-for-the-twitter-streaming-api/ > bcomposes-twitter-api.html
$ less bcomposes-twitter-api.html

假设您使用Web浏览器从API中提取了推文,并且curl可以通过这种方式访问​​网页,那么使用curl来获取推文并将其直接定向到文件很简单。

$ curl https://stream.twitter.com/1/statuses/sample.json -u$TWUSER:$TWPWD > tweets.json

就是这样:您现在拥有一个不断增长的文件,其中包含随机采样的推文。 看一看,尽量不要对人性失去信心。

拉动具有特定属性的推文

您可能想从特定用户那里获得推文,而不是随机样本。 这需要用户ID,而不是我们通常看到的用户名。 可以通过查看/ users / show端点,从Twitter API获取用户的ID。 例如,以下给出了我的信息:

这使:

<user>
<id>119837224</id>
<name>Jason Baldridge</name>
<screen_name>jasonbaldridge</screen_name>
<location>Austin, Texas</location>
<description>
Assoc. Prof., Computational Linguistics, UT Austin. Senior Data Scientist, Converseon. OpenNLP developer. Scala, Java, R, and Python programmer.
</description>
...MORE...

因此,要通过Twitter API关注@jasonbaldridge ,您需要用户ID119837224。您可以使用“ follow”查询参数通过API提取我的推文。

$ curl -d follow=119837224 https://stream.twitter.com/1/statuses/filter.json -u$TWUSER:$TWPWD

我很有可能现在不发推文,所以您可能什么也看不到。 让我们关注更多的用户,我们可以通过添加更多用逗号分隔的ID来做到这一点。

$ curl -d follow=1344951,5988062,807095,3108351 https://stream.twitter.com/1/statuses/filter.json -u$TWUSER:$TWPWD

紧随其后的是《连线杂志》(@wired),《经济学人》(@theeconomist),《纽约时报》(@nytimes)和《华尔街日报》(@wsj)。 您也可以将这些ID写入文件并从文件中读取它们。 例如:

$ echo 'follow=1344951,5988062,807095,3108351' > following
$ curl -d @following https://stream.twitter.com/1/statuses/filter.json -u$TWUSER:$TWPWD

当然,您可以编辑文件“跟随”,而不是使用echo来创建它。 另外,文件名可以随意命名(“跟随”是因为这里的名称并不重要)。 您可以使用“ track”查询参数在推文中搜索特定术语,例如“ Scala”。

$ curl -d track=scala https://stream.twitter.com/1/statuses/filter.json -u$TWUSER:$TWPWD

而且,毫不奇怪,您可以使用逗号将它们分开来搜索多个项目。

$ curl -d track=scala,python,java https://stream.twitter.com/1/statuses/filter.json -u$TWUSER:$TWPWD

但是,这仅要求一条推文至少匹配这些术语之一。 如果要确保多个术语匹配,则需要将它们写到文件中,然后再引用该文件。 例如,要获取同时具有“情感”和“分析”或“机器”和“学习”或“文本”和“分析”的推文,您可以执行以下操作:

$ echo 'track=sentiment analysis,machine learning,text analytics' > tracking
$ curl -d @tracking https://stream.twitter.com/1/statuses/filter.json -u$TWUSER:$TWPWD

您可以从地球表面上特定的矩形区域(边界框)中提取鸣叫。 例如,以下内容从得克萨斯州奥斯丁提取带有地理标签的推文。

$ curl -d locations=-97.8,30.25,-97.65,30.35 https://stream.twitter.com/1/statuses/filter.json -u$TWUSER:$TWPWD

边界框由纬度(左下),经度(左下),纬度(右上),经度(右上)给出。 您可以添加更多的边界框以捕获更多位置。 例如,以下捕获了来自奥斯丁,旧金山和纽约市的推文。

$ curl -d locations=-97.8,30.25,-97.65,30.35,-122.75,36.8,-121.75,37.8,-74,40,-73,41 https://stream.twitter.com/1/statuses/filter.json -u$TWUSER:$TWPWD

结论

这一切都非常简单,并且对于许多种类的推文收集需求非常方便。 问题之一是Twitter有时会断开连接,并且您最终会丢失推文,直到开始新的过程。 如果您需要持续监控,请参阅UT奥斯汀的Twools (Twitter工具),以获取源源不断的推文,这些推文在Twitter断开连接时就会出现。

参考: Bcomposes博客上JCG合作伙伴 Jason Baldridge 的Twitter流API 演练

翻译自: https://www.javacodegeeks.com/2013/02/a-walk-through-for-the-twitter-streaming-api.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值