今回はPythonでスクレイピングを行おうと思います。特に何かするためというわけではなく、学習用に残しておこうと思って記事を書いていきます。
Contents
スクレイピングとは?
スクレイピングは、ウェブサイトから情報を取得し、その情報を加工して新たな情報を生成することです。Webスクレイピングとも呼ばれ、スクレイピングを行うプログラムをスクレイパーと呼びます。
情報を取得するところまではクローリングと同じですが、スクレイピングでは取得した情報を加工する工程も含まれます。ただ、明確な定義があるわけではないので、クローリングとスクレイピングを同じような意味で使っている場合もあります。
スクレイピングの例としては、様々なニュースサイトを巡回して見出しを抜き出して一覧にしたり、商品のデータを集めて価格表を生成したりするといったものが挙げられます。
TECH NOTEより転記
本来であればブラウザやアプリを開いてサイトにアクセスして必要な情報を閲覧するといった手順をスクレイピングを使用すればサイトにアクセスする必要なしに情報を取得するツールを作成することが可能になります。
株価の変動を監視するツールを作成できればかなり需要があるかと思います。
BeautifulSoupのインストール
コマンドプロンプトを起動して下記のコマンドを実行してください。
1 |
pip install beautifulsoup4 |
beautifulsoup4を指定しないとbeautifulsoup3がインストールされてしまうので必ず指定するようにしましょう。
インストールはこれだけで完了です。
Requestsのインストール
Requestsも同じようにコマンドプロンプトから下記のコマンドを実行してください。
1 |
pip install Requests |
Requestsのインストールはこれで終了です。
ライブラリのバージョン確認方法
beautifulsoupとRequestsのインストールが完了した後はきちんとインストールされているか確認するためにコマンドプロンプトを起動して下記のコマンドを実行してください。
1 |
pip list |
下記のように表示されればOKです。他にインストールされているライブラリも表示されますが、確認するのは以下の部分だけです。
1 2 3 4 |
Package Version -------------- --------- beautifulsoup4 4.7.1 requests 2.21.0 |
バージョンが表示されていれば問題なくインストールされています。
取得したい対象を確認する
今回は勉強がてらに筆者のブログのタイトルを取得するコードを作成しましょう。
まずはTopページにアクセスしてタイトルがどの要素なのかを確認します。
筆者ブログのTopページを表示したらF12を押して開発者ツールを起動します。InternetExplorerでもGoogle Chromeでも同じくF12で起動できます。
ツールを起動したのち、赤丸を付けたボタンをクリックした後でブログのタイトルをクリックしてください。
クリックすると下記のようにHTMLが表示されます。
実際にコードを書いてみる
デバッグ実行が可能な環境であれば変数の値を確認しながら進めることができるのでぜひデバッグ設定を行っておきましょう。筆者はVisual Studio Codeを使用してデバッグをしています。設定方法は省きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
import requests from bs4 import BeautifulSoup blog_title = "" #筆者ブログのHTMLを取得 url = 'https://villhell.com/' html = requests.get(url) #HTMLパースオブジェクト作成 soup = BeautifulSoup(html.text, "html.parser") #span要素を全取得 span = soup.find_all("span") #span要素から「tn-logo-size」を抽出 for tag in span: try: class_name = tag.get("class").pop(0) #tn-logo-sizeかどうか判定 if class_name in "tn-logo-size": #タイトル名を出力 print(tag.string) #タイトルが取得できれば他を検索する必要なし break except: print("エラー:解析に失敗") |
出力結果は『底辺プログラマーの雑記ブログ』と表示されていればOKです。
最後に
スクレイピングのかなり基礎的なコードを記載しました。
次はもっと実践的なコードを作成していきます。
今回の記事は以上となります。最後まで読んで頂きありがとうございます。