通过调用Twitter API抓取Twitter数据
2018-10-20 本文已影响10人
Android高级架构探索
国内研究weibo的人比较多,资料也相对较多,但是twitter的资料相对较少。今天简单说一下twitter api的使用。最近一小需求,采集含有指定关键词的twitter数据,瞬间想到写个爬虫来抓取,后来突然想到twitter应该有open api可用。使用了vpn翻墙之后简单的了解了twitter.com,决定直接使用 twitter api。由于twitter的open api现在也是基于oauth协议的,因此使用流程和国内一些社区比如说人人网,weibo的api的过程类似。
要想使用twitter api,首先要有twitter的账号,并且在twitter deveoper中创建应用,地址:https://apps.twitter.com/app/new
上边怎么填就不说了,创建成功之后可以获得应用的信息。创建成功之后你会获得Consumer key和Consumer secret。将这两个数据保存下来。如下图:
image.png
为了方便用java操作,这里我们使用开源的twitter4j,最新版本为:twitter4j-4.0.2。(https://github.com/twitter/twitter4j)Twitter4J也就对Twitter 的API进行了java封装,这样的话我们就可以很方便的使用java才操作 twitter api。twitter4j-4.0.2.zip之后,我们可以看到说明文档和实例代码,当然也包括源代码。糟糕的是我觉得说明文档写的并不详细,建议直接看示例代码和源代码就好。
首先我们创建一个java项目(当然你也可以创建web应用)并导入相关jar,然后在项目路径下创建twitter4j.properties文件,里边填写刚才保存下的Consumer Key和Consumer Secret。
项目结构:
image.png
twitter4j.properties:
image.png
然后和所有基于oauth协议的开发api一样,我们需要获取授权信息。代码如下: image.png
image.png
image.png
image.png
这里我们解释一下”输入PIN“这里到底是输入什么?很简单就是你在授权页面登陆成功之后,浏览器跳转时携带的code参数,如下图所示:
image.png
运行完上面的代码之后,我们的授权信息会被写入到twitter4j.properties文件中:
image.png
image.png
oauth.accessTokenSecret=vJsyhLZF3hKLFPUNJINMBI64UgChxzJz8p6oxZcS3Ioauth.consumerKey=7E1l6GHWuMFTwcZ0tIGZhP
下面我们通过调用api来获取包含指定关键词的twitter。(你可以参考实例代码SearchTweets.java)本人代码如下:
image.png
image.png
image.png
ok,到现在为止我们便可获取包含fe关键词的twitter数据。但是要注意,这种方式只能获取一周之内的twitter数据。要想不断的获取的话,只能采取另外的方案,通过调用Streaming apis不断的获取twitter,然后自己再过滤。可以参考PrintSampleStream.java实例代码。
demo下载地址:http://download.csdn.net/detail/dd864140130/9451385