以前一直想用爬蟲登錄並抓取twitter數據,試過scrapy,requests等包,都沒成功,多是我還不太熟悉的緣由,不過html
今天發現了一個新包tweepy,專門用於在Python中處理twitter API。先嚐試一下教程的第一個例子,通過了本身的一點修改python
代碼以下:mysql
Tweepy抓取twitter數據 1 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')
代碼解釋:正則表達式
第3-4行:導入tweepy和re模塊。之因此這麼簡單的代碼中要用re是由於在提取推文過程當中遇到了emoji表情,而emoji unicode是沒法編碼成 gbk 的,因此要用正則表達式把全部表情都替換掉。sql
第6-9行:設置API和token,這個須要註冊後在apps.twitter.com新建application後得到。api
第11行:根據auth返回API對象,用於具體返回responsesapp
第14行:設置emoji表情的正則表達式,用於過濾出全部的表情,此處參考了下面註明的一篇stackoverflow文章。機器學習
第15行:獲取用戶時間線上的信息scrapy
第16行:設置一個計數的變量ide
第17行:遍歷全部的推文:
循環內:
第18-22行:輸出序號,並輸出推文內容,將全部的emoji unicode用 ’--emoji--‘ 替代並將unicode編碼爲utf8以解決不能輸出的問題。
抓取Twitter數據的重點是twitter要求全部requets都必須通過OAuth認證,而tweepy這個包在這方面的設定讓authentication變得十分方便。
http://tweepy.readthedocs.io/en/v3.5.0/getting_started.html
若是你是第一次接觸Tweepy,就請從這裏開始。這個教程的目標是提供你學習Tweepy所需的信息,讓你學習完本教程後能熟練使用Tweepy。咱們在這主要談論重要的基礎內容,而不會涉及太多細節,
這 個例子能夠下載你Twitter主頁上的推文,而且把相應的文本內容打印到控制檯。Twitter要求全部請求(requests)都經過OAuth協議 進行受權(身份認證)。Authentication Tutorial(身份認證教程)(連接)中有受權的詳細介紹。
API類爲Twitter的因此REST API方法提供接口(The API class provides access to the entire twitter RESTful API methods.)每種方法接受不一樣的參數,可是都返回response。更多請參見API Reference(連接)
當咱們使用一種API方法時,咱們大多數狀況下會獲得一個Tweepy model 類實例,其中包含了從Twitter返回的可讓咱們應用到app中的數據。好比下面這行代碼就返回了一個User model:
Model中包含了數據和一些有用的方法:
更多內容請參見 ModelsReference(連接)