数行で簡単 Pythonでwebサイトから情報取得


初めに

こんにちは、rickyです。
今回はPythonのLibraryであるBeautifulSoup(以下bs4)を用いて簡単にWebサイトから情報を取得する方法(構文解析)をご紹介します。
この知識を利用すればニュースサイトから必要な情報だけを取得することができます。
この記事ではQiitaのURLからトレンドを所得してみます。
まずはソースコードからです。

Qiitaからトレンド取得のソースコード

import requests
from bs4 import BeautifulSoup

url = "https://qiita.com/"
html = requests.get(url)

soup = BeautifulSoup(html.text, 'html.parser')

for trand in soup.find_all(class_="tr-Item_title"):
    print(trand.text)

補足

はじめてbs4とrequestsを使う場合はpipでインストールしてください。

pip install bs4
pip install requests

解説

1.まずは必要なライブラリをインポートしていきます。

2.次にURLの情報をrequests.get(url)で取得します。
このとき変数htmlをprintするとという情報が出力されます。
Response 200はHTTPのレスポンスが成功したことを示しています。
html.textでHTMLファイルの内部の情報を取得できます。

3.次にbs4を使ってデータを取り出します。
textデータをparser(構文解析)にかけます。

4.今回はqiitaのトレンドを取得します。
そのための必要な情報を知るためにブラウザ開発者ツール(F12で開く)を開きます。
開発者ツールを使って欲しい情報のタグを見つけます。

今回はclassタグのtr-Item_titleという情報がよさそうです。
このタグの情報をfind_allですべて取得します。
ちなみにclassタグなのにclass_としているのはclassという単語がpythonの予約語であるためです。
for文を使って出力をします。
このときもtextを使うことでトレンドの内容だけを取得することができます。
これでqiitaのトレンドが取得できました。
お疲れさまでした。

おわりに

今回はbs4を使って構文解析を行いました。
簡単にかけてしっかり情報を取得できるので非常に便利です。
ぜひこのプログラミングを応用していろいろな情報を取得してください。
この記事が読んで下さった方の役に立てば幸いです。

参考URL

https://developer.mozilla.org/ja/docs/Web/HTTP/Status
http://kondou.com/BS4/