之前一直想用爬虫登陆并抓取twitter数据,试过scrapy,requests等包,都没成功,可能是我还不太熟悉的原因,不过
今天发现了一个新包tweepy,专门用于在python中处理twitter API。先尝试一下教程的第一个例子,经过了自己的一点修改
代码如下:
<pre name="code" class="python">__author__ = 'xyz'
import re
import tweepy
auth = tweepy.OAuthHandler("xxxxx",
"xxxxx")
auth.set_access_token("xxxxx",
"xxxxx")
api = tweepy.API(auth)
highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
public_tweets = api.home_timeline()
num = 0
for tweet in public_tweets:
print num
num += 1
text_noem = highpoints.sub('--emoji--', tweet.text)
text_noem = text_noem.encode('utf8')
print(text_noem)
第3-4行:导入tweepy和re模块。之所以这么简单的代码中要用re是因为在提取推文过程中遇到了emoji表情,而emoji unicode是无法编码成 gbk 的,所以要用正则表达式把所有表情都替换掉。
第6-9行:设置API和token,这个需要注册后在apps.twitter.com新建application后获得。
第11行:根据auth返回API对象,用于具体返回responses
第14行:设置emoji表情的正则表达式,用于过滤出所有的表情,此处参考了下面注明的一篇stackoverflow文章。
第15行:获取用户时间线上的信息
第16行:设置一个计数的变量
第17行:遍历所有的推文:
循环内:
第18-22行:输出序号,并输出推文内容,将所有的emoji unicode用 ’--emoji--‘ 替代并将unicode编码为utf8以解决不能输出的问题。
抓取Twitter数据的重点是twitter要求所有requets都必须经过OAuth认证,而tweepy这个包在这方面的设定让authentication变得十分方便。