高機能なWebスクレイピングができる Python用のライブラリ「requests-html」の紹介です。
- Webスクレイピングをするライブラリですが、ページ情報を取得する際に HTML要素のセレクターを指定することもできます

requests-html は プロジェクトルート上から ' pip
' をコマンドを使ってインストールします。また、 プロジェクトで依存関係を指定している場合は ' pipenv
' を使うことも可能です。
# pip
pip install -U requests-html
# pipenvを使う場合
pipenv install requests-html
requests-html はモジュールを読み込んだ後、わずかなコードで使うことが出来ます。
下のコードは、 ' http://co.bsnws.net/article/269
' (このサイト) 内のページ全体のテキストを抜き出した後、HTMLタグを除去してテキスト形式に変換しています。
from requests_html import session # requests_htmlの読み込み
# ターゲットなるURL
url = 'http://co.bsnws.net/article/269'
# ページに接続
response = session.get(url)
# 取得したオブジェクトをhtmlに変換
article = response.html
# ページをtextに変換
print(article.text)
# ページをhtmlタグに変換
# print(article.html)
上のスニペットのようにページ全体を抜き出すような処理は 珍しい事ではありませんが、 requests_html は jQueryを使って 要素のセレクターを指定するように、部分的に絞りだすことができます。
* 下のコードは idを指定し、 このサイト ' http://co.bsnws.net/article/269' のコンテンツ部分のみを抜き出しています
from requests_html import session
url = 'http://co.bsnws.net/article/269'
response = session.get(url)
# findメソッドを使って、id="article_content" を指定して取得
# * first=True オプションが無い場合、'list' 形式で値が返ってきます
article = response.html.find('#ariticle_content', first=True)
# 要素を明確に指定する場合
# response.html.find('#ariticle_content > p ')
print(article.text)
""" output
設定なしにバンドルファイルが作成できるビルドツール「Parcel」の紹介です。
Webページで css や javascript などを " .min.* " などの1ファイルにバンドルすることは、今や よくある事の 1つです。
* バンドルファイルを作成するイメージ
webpack を使ってバンドルファイルを作成する為には、それぞれのファイル & タイプにあったプラグインが必要になり、特に画像やフォントなどが入った CSS Framework
のテンプレートとなるとルールの記述も長くなる傾向にあります。
....
"""
取得したページ情報に、" absolute_links
" オブジェクトを指定すると、" ページの特定要素内で使われているURLリンクを取得する " なんてことも簡単にできます。
from requests_html import session
url = 'http://co.bsnws.net/article/269'
response = session.get(url)
# findメソッドを使って、id="article_content" を指定して取得
# * first=True オプションが無い場合、'list' 形式で値が返ってきます
article = response.html.find('#ariticle_content', first=True)
print(article.absolute_links)
''' output
* set オブジェクトで値が返ってきます
{'http://co.bsnws.net/article/244', 'https://github.com/parcel-bundler/parcel'}
'''
requests_html は細かい事が出来るので、スクレイピングだけにとどまらず、クローラーに近い機能も 手早く作ることができそうです。また、テキストの加工の工数も大幅に短縮できそうです。
GitHub : kennethreitz/requests-html