Pythonクローリング&スクレイピング[増補改訂版] ―データ収集・解析のための実践開発ガイドー その10
第5章 クローリング・スクレイピングの実践とデータの活用
クローリングではなく、API を利用してデータを活用してスクレイピングを行います。
Twitter API の利用
Twitter API は Twitter Developers に申請することで使うことができます。
Twitter API 登録 (アカウント申請方法) から承認されるまでの手順まとめ ※2019年8月時点の情報 - Qiita
申請をするなかで英語で API をどのように利用するかなどを記述しなければいけませんが、適当に埋めて申請しました。個人利用であれば簡単に申請が通ると思います。
タイムラインの表示 (Requests-OAuthlib)
アクセストークンなどは隠すべき情報なので、".env" ファイルを作成し、そこに、
TWITTER_API_KEY=************* TWITTER_API_SECRET_KEY=************* TWITTER_ACCESS_TOKEN=************* TWITTER_ACCESS_TOKEN_SECRET=*************
github を使うときは、.env は .gitignore ファイルに適切に設定する必要があります。
import os from requests_oauthlib import OAuth1Session # 環境変数から認証情報を取得する TWITTER_API_KEY = os.environ['TWITTER_API_KEY'] TWITTER_API_SECRET_KEY = os.environ['TWITTER_API_SECRET_KEY'] TWITTER_ACCESS_TOKEN = os.environ['TWITTER_ACCESS_TOKEN'] TWITTER_ACCESS_TOKEN_SECRET = os.environ['TWITTER_ACCESS_TOKEN_SECRET'] CK = TWITTER_API_KEY CS = TWITTER_API_SECRET_KEY AT = TWITTER_ACCESS_TOKEN AS = TWITTER_ACCESS_TOKEN_SECRET twitter = OAuth1Session(CK, CS, AT, AS) response = twitter.get('https://api.twitter.com/1.1/statuses/home_timeline.json') for status in response.json(): print('@' + status['user']['screen_name'], status['text'])
タイムラインの表示 (tweepy)
Python の Twitter API を利用するためのライブラリである tweepy を使うと先ほどのものと似たような感じで記述できます。
import os import tweepy # 環境変数から認証情報を取得する TWITTER_API_KEY = os.environ['TWITTER_API_KEY'] TWITTER_API_SECRET_KEY = os.environ['TWITTER_API_SECRET_KEY'] TWITTER_ACCESS_TOKEN = os.environ['TWITTER_ACCESS_TOKEN'] TWITTER_ACCESS_TOKEN_SECRET = os.environ['TWITTER_ACCESS_TOKEN_SECRET'] # 認証情報 auth = tweepy.OAuthHandler(TWITTER_API_KEY, TWITTER_API_SECRET_KEY) auth.set_access_token(TWITTER_ACCESS_TOKEN, TWITTER_ACCESS_TOKEN_SECRET) api = tweepy.API(auth) public_tweets = api.home_timeline() for status in public_tweets: print('@' + status.user.screen_name, status.text)
本
Pythonクローリング&スクレイピング[増補改訂版] -データ収集・解析のための実践開発ガイド
- 作者: 加藤耕太
- 出版社/メーカー: 技術評論社
- 発売日: 2019/08/10
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
感想
Twitter API を利用するには多少の手間がかかりましたが、Twitter を利用したアプリの作成ややデータ分析などをするには必要な手順ですね。まあ、画期的なアイディアが思い浮かばない限りこの API を利用したものは作らないと思います。