APIキーを使わずにPythonからGoogle翻訳
今回紹介する googletrans
はGoogleの翻訳APIを使わずに翻訳を行うことができるPythonライブラリです。翻訳以外にも言語の検知に使うこともできます。
まずは、pipを使ってgoogletrans
をインストールします。
$ pip install googletrans
インストールができたら翻訳をしてみましょう。Translator
のインスタンスを作成した後、第一引数に対象文、dest
に変換先言語を指定してtranslate
メソッドを呼び出します。
>>> from googletrans import Translator >>> translator = Translator() >>> translator.translate('今日はいい天気です', dest='en') Translated(src=ja, dest=en, text=It is a good weather today, pronunciation=None, extra_data="{'translat...") >>> translator.translate("It's cloudy today.", dest='ja') Translated(src=en, dest=ja, text=今日は曇っている。, pronunciation=None, extra_data="{'translat...") >>>
また、detect
メソッドを使うことで、言語の検知をすることもできます。
>>> translator.detect('この文章は日本語で書かれました。') Detected(lang=ja, confidence=1) >>> translator.detect('This sentence is written in English.') Detected(lang=en, confidence=1)
PythonでInstagram APIを使わずに投稿を取得する
前回はTwitterの公式APIを使わずにTweetを取得できるライブラリであるTwitter Scraperを紹介しました。今回はその Twitter Scraper にインスパイアされて作られた Instagram Scraper を使ってみたいと思います。Instagram Scraper は Instagram の公式APIを使わずに投稿を取得することができるPythonライブラリです。
インストール
まずは Instagram Scraper をインストールします。
pip
を使ってインストールしたいところなのですが、Instagram Scraper は今のところpip
でのインストールには対応していません。
そこで、リポジトリをクローンしてインストールをします。クローンしたらリポジトリ内にあるrequirements.txt
を使って必要なパッケージをインストールします。
$ git clone https://github.com/meetmangukiya/instagram-scraper.git $ cd instagram-scraper $ pip install -r requirements.txt
インストールは以上です。
使い方
インストールが完了したら、Pythonインタプリタを起動します。
インタプリタを起動したら、scrape_instagram
関数をインポートします。
scrape_instagram
関数にタグを指定することで、Instagramの投稿を取得する仕組みになっているようです。
>>> from instagram_scraper import scrape_instagram >>> >>> list(scrape_instagram(['quotes', 'meet'], 1)) [('https://scontent-nrt1-1.cdninstagram.com/vp/6969e25d53bcf493944639c4ceaa8bc2/5C10E661/t51.2885-15/e35/c0.135.1080.1080/s150x150/36885191_734652190205497_1283998134044721152_n.jpg', '', set(), set()), ('https://scontent-nrt1-1.cdninstagram.com/vp/5e56f2bfabe1b48881c15e5ee16a7705/5BEE8D29/t51.2885-15/sh0.08/e35/c0.0.662.662/s640x640/37702301_694562980905572_7369649703631192064_n.jpg', 'Follow ( @textgoalsbabe) ♥ For More', set(), {'textgoalsbabe'}), ('https://scontent-nrt1-1.cdninstagram.com/vp/e093ea347b8c8475d983b4512404ab01/5BEFE9DD/t51.2885-15/e35/c0.134.1080.1080/s150x150/38424785_688684664809911_8521908696647729152_n.jpg', '', set(), set()), ('https://scontent-nrt1-1.cdninstagram.com/vp/cdf2ce6a68abf77caae00acbc113a4f3/5B6E05DA/t51.2885-15/e15/c157.0.405.405/38285822_251483489018320_668763636763721728_n.jpg', 'reunited♡\n' '5th hug—8.8.18\n' 'vereint bis 9.8♛ { @leanaa.swz & @__stellaaaaa\n' '#lela #internetfriends #internetfreunde #ibfsquad #ibfgoals #meet ' '@webfriendsvides \n' '@virtuel_r @virtual.ibfs @ifreposts @ibfgoalz_', {'ibfgoals', 'ibfsquad', 'internetfreunde', 'internetfriends', 'lela', 'meet'}, {'__stellaaaaa', 'ibfgoalz_', 'ifreposts', 'leanaa.swz', 'virtual.ibfs', 'virtuel_r', 'webfriendsvides'})]
うーん、何がどこに入っているかわからないですね。 そもそも、インスタグラムをスクレイピングして取得したいのは、画像や動画のはずです。 その点ではこのライブラリはあまり適していないと思われます。
PythonでTwitter APIを使わずにTweetを取得する
データ分析をしたり、コーパスを作成する際に、Tweetを取得することはよくあると思います。しかし、Twitterの公式APIは制限がやたら厳しく、使いやすいとは言えません。今回紹介する Twitter Scraper はTwitterの公式APIを使わずにTweetを取得することができるPythonライブラリです。APIの制限がなく、非常に高速に動作するのが特徴です。
ちなみに、Twitter Scraper の作者は requests を作った Kenneth Reitz です。
インストール
まずは、pipenv
を使ってtwitter-scraper
をインストールします。
このとき、仮想環境のPythonバージョンは3.6以上にしておいてください。
なぜなら、twitter-scraper
の中ではPython 3.6から追加されたfstringを使っているからです。
そのため、Python 3.6 未満の環境だと、パッケージをインポートした際に例外が発生してしまいます。
$ pipenv install twitter-scraper Installing twitter-scraper... Adding twitter-scraper to Pipfile's [packages]... Pipfile.lock not found, creating... Locking [dev-packages] dependencies... Locking [packages] dependencies... Updated Pipfile.lock (776465)! Installing dependencies from Pipfile.lock (776465)... 🐍 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 19/19 — 00:00:05
使い方
インストールが完了したら、Pythonインタプリタを起動します。
インタプリタを起動したら、get_tweets
関数をインポートします。
get_tweets
関数にユーザ名を指定することで、Tweetを取得することができます。
>>> from twitter_scraper import get_tweets >>> >>> for tweet in get_tweets('kennethreitz', pages=1): >>> print(tweet['text']) P.S. your API is a user interface OPINIONS ...
pages
パラメータを指定することで過去のTweetにさかのぼって取得することができます。
「これで指定したユーザのTweetをすべて取得できる!」と思いきや、数百件取得するとそれ以上は取れなくなります。
とはいえ、Twitter APIの制限を気にせず使えるので、有効活用していきましょう。