保有中の株の株価を自動で取得してデータベース化したいのでpythonでスクレイピングする方法を調査しました。
requestsモジュール
最低限必要なのはrequestsモジュール
pipコマンドを使ってインストールします。
pip3 install requests
サンプルプログラム
scrape_html.py
import requests import json res = requests.get("http://sample.kansai-fan.com/py/pymysql.py") print(res.text)
requestsモジュールのgetメソッドで指定したURLのレスポンスを取得
レスポンスのtextプロパティを出力すればhtmlの内容が出力されます。
実行結果
<html><meta charset='utf-8'><body> <h1>PyMySQLサンプル</h1> 件数2 </body></html>
BeautifulSoupモジュール
次にやりたいのはhtmlから特定のデータを抽出すること。
これはBeautifulSoupモジュールを使えば簡単に実装できます。
こちらもpipコマンドを使ってインストールします。
pip3 install beautifulsoup4
サンプルプログラム
scrape_html.py
import requests import json from bs4 import BeautifulSoup res = requests.get("http://sample.kansai-fan.com/py/pymysql.py") doc = BeautifulSoup(res.text, "html.parser") el = doc.find("h1") if el is not None: print(el.get_text())
コンストラクタで取得したhtmlとパーサーを指定すれば解析は完了。
後はfindメソッドを使って要素を取得、get_text()メソッドで内容を表示させます。
実行結果
PyMySQLサンプル
<h1>の内容が出力されました。
findメソッドにタグを指定すると最初の要素のみ取得。
複数の要素を取得したいときはfind_allメソッドを使う必要があります。
これでスクレイピングの準備は完了。
次回は株価取得に挑戦する予定です。