[Python] RoboBrowserを使ってみる (1)

robobrowser

https://github.com/jmcarp/robobrowser

Pythonでwebスクレイピングを行うためのライブラリです。

セッション部分にはrequestが、HTML部分にはbeautifulsoupが内部で対応しています。

とてもコードは書きやすいですが、robobrowser==0.5.3ではjavascriptに対応できておらず、またここ5年間更新もされていないので、特にこだわりがなければ、他のライブラリを使う方が良いと思います。

今回は、 https://pypi.org/で、 ‘robobrowser’を検索してみて、プロジェクトが何件検索で出てくるかを調べてみます。

インストール

pipでrobobrowserをインストールします。

$ pip install robobrowser

必要なモジュールのインポート

robobrowserとreをインポートします。

>>> import re
>>> from robobrowser import RoboBrowser

robobrowerオブジェクトの生成

robobrowserオブジェクトを生成して、 https://pypi.org/のページを開きます。

>>> br = RoboBrowser()
>>> br.open('https://pypi.org/')
>>> br
‹RoboBrowser url=https://pypi.org/›

フォームの入力と検索

フォームに検索文字を入力し検索、検索結果のページへ遷移するコードを書きます。

ブラウザで実際にhttps://pypi.org/を開いてみて、chromeの検証ツールを使ってhtmlの構造を把握し、その情報を基にコードを書きます。

>>> form = br.get_form(action="/search/")
>>> form
‹RoboForm q=›
>>> form['q'].value = 'robobrowser'
>>> form
‹RoboForm q=robobrowser›
>>> br.submit_form(form)
>>> br
‹RoboBrowser url=https://pypi.org/search/?q=robobrowser›

検索結果のparseと目標文字列の取得

検索結果のページをparseし文字列に変換後、目標の文字列を正規表現で取得します。

ブラウザで実際に検索を行い、chromeの検証ツールを使ってhtmlの構造を把握し、その情報を基にコードを書きます。

>>> results_parsed = br.parsed
>>> results_parsed
# htmlが表示される。とても長いので省略。
>>> src = str(results_parsed)
>>> src
# htmlを文字列に変換したものが表示される。とても長いので省略。
>>> start = '‹p›\n‹strong›'
>>> end = '‹/strong›\n                projects\n'
>>> result = re.search('{}(.*){}'.format(start, end), src).group(1)
>>> result
'6'

無事に目標の数字を取得することができました。

こちらの記事の続きです。 今回はRoboBrowserを使って、みんかぶから現在株価と目標株価を取得してみます。 インポートとインスタンスの生成 robobrowserをインポートして、インスタンスを作成します。 >>> from rob...