尝试利用python进行twitter数据的获取 ** 1.注册twitter**
第一步就需要翻墙。host方法只能注册一个账户刷一刷文章,但并不能进入开发者API那一块。进入开发者网页最简单的方法就是直接在个人主页的"twitter"前面加一个"apps."就好了。然后按照要求申请一个apps,获得consumer key,consumer secret,access token,access token secret 4个字符串
2.python 环境
没什么特殊的要求,我的python 3.5,pip 自动安了一个tweepy 就好了。说明文档在这里:http://tweepy.readthedocs.io/en/v3.5.0/getting_started.html
3.试运行
尝试第一次运行。需要一直开着全局模式的代理,局部代理一样会报错
import tweepy
consumer_key='twitter apps注册给的'
consumer_secret=''twitter apps注册给的'
access_token='twitter apps注册给的'
access_secret='twitter apps注册给的'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
api = tweepy.API(auth,proxy='127.0.0.1:1080')#proxy这里这个号不给的话会一直报没响应的错误
#home_time方法返回用户和用户朋友的最多20条状态
for status in tweepy.Cursor(api.home_timeline).items(10):
print (status.text)
这里是关注的用户的twitter信息……鬼知道我关注了些什么……
4.全球用户的相关主题get
这里需要让tweepy链接twitter的stream api。这里选择的主题是panda,原本希望应该是什么大熊猫相关的东西吧,然而万万没想到……之后再说。调用后生成json文件
class MyListen(StreamListener):
def on_data(self, data):
try:
with open('panda.json','a') as f:
f.write(data)
print("add!!")
return True
except BaseException as e:
print("Error: data")
return True
def on_error(self, status):
print(status)
return True
witter_stream=Stream(auth,MyListen(),proxy='127.0.0.1:1080')
#选择希望get的相关内容
witter_stream.filter(track=['#panda'])
生成的json文件里有一堆东西,包括用户信息,文章内容,文章引用图片信息,转发,评论内容。随着程序的运行,每一组都有可能增大。只能强制中断,不然就没完了……其中想将图片直接读取
5.通过url存下图片 图片信息的url 在media组中。找到即可。用到skimage读取信息。skimage的安装需要pip install scikit-image。这是我实验用的一个url。
from skimage import io
image=io.imread('http://pbs.twimg.com/media/DEOBBJJU0AATl3e.jpg')
io.imshow(image)
io.imsave('t.jpg',image)
io.show()
然而……说好的熊猫却是这样的……