AB型技術系 主に備忘録

ほぼプログラム関連の備忘録

保有中の株の株価を自動集計したいのでpythonでスクレイピングする方法を調査

保有中の株の株価を自動で取得してデータベース化したいのでpythonスクレイピングする方法を調査しました。

requestsモジュール

最低限必要なのはrequestsモジュール

pipコマンドを使ってインストールします。

pip3 install requests

スクレイピング対象のページ

freelancer.hatenablog.jp

この記事の中で作ったサンプルーページをスクレイピング対象にします。

http://sample.kansai-fan.com/py/pymysql.py

サンプルプログラム

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メソッドを使う必要があります。

これでスクレイピングの準備は完了。
次回は株価取得に挑戦する予定です。