目的
プロジェクトS という題目で、ラズパイにインストールしたPythonで株価を予想してみようと思います。
前回はコチラ
今回はスクレイピングについてです。
そして今回も参照リンクだけで、特に本投稿でスクレイピングの解説などは行いません。
さらにこのスクレイピングですがグレーな行為
として有名です。
少し取り扱い方を間違えるだけで、違法行為 となります。
yahoo
もスクレイピングの対象とすることを禁止しております。
詳しくは参照サイトでの説明がわかりやすいので、そちらを参照ください。
参照サイト
参照するサイトは以下です。
PythonでWebスクレイピングをしよう(株価)
上記のサイトの通りに実行していくので、この記事では特にやり方などは記載しません。
実行
ソースコード全体を取得
参照サイトのとおりにget_html.py
を実行していきますが、まず
# pip3 install requests
は実施しておきます。
これで問題なく実行でき、対象のホームページのソースコードが取得できました。
ちなみにURLはhttp://k-db.com/
にしました。
前まで株価のチェックで使われていたようですが、今はサービスクローズ状態となっております。
このトップ画面の文字列を取得してみようかなと。
タイトルを取得
ソース全体は取得できたので、次にページのタイトルを取得したいと思います。
BeautifulSoup
というライブラリとxmlx
という形式を利用してソース全体からタイトルの部分だけ取得したいと思います。
# pip3 install BeautifulSoup4
# sudo apt-get install python-lxml
lxml
はapt-getでしかインストールできませんでした。
ソースコードは以下にしました。参照先から内容を変えたので記載します。(文字化け対応をしました。)
import requests
from bs4 import BeautifulSoup
response = requests.get('http://k-db.com/')
response.encoding = response.apparent_encoding
soup = BeautifulSoup(response.text, features="lxml")
title = soup.title.string
print(title)
上記を実行することで、以下のように取得できました。
株価データサイト k-db.com
これを応用すれば、目的のデータは取得できると思いました。
その他スクレイピング時に利用するプログラム
スクレイピングで使われる他の技術をメモとして書いておきます。
ローカルファイルを参照するようにする。
最初からネットを参照すると、アクセス過多によるBANの可能性もあるので、
まずは目的のページをローカルに落として検証すべきだと思いました。
その落としてきたローカルファイルの参照方法です。
filepath = 'XXXX.html'
with open(filepath , encoding='utf-8') as f:
html = f.read()
soup = BeautifulSoup(html, features="lxml")
tdタブで囲まれた文字列を参照する方法
td以外でも良いのですが、例としてtd
利用します。
例えばtd
で囲まれた、abc
という場所を参照するプログラムは以下となります。
ret = soup.find('td', string='abc')
親のタグ要素から取得する
親の要素からデータを取得したい場合は以下のプログラムとなります。
例えば上のtd
の要素だったら以下コマンドでtr
要素が取得できます。
ret_P = ret.parent
csvファイルに追記する
ローカルのcsvファイルを開いて、追記するプログラムは以下となります。
tdタグのデータを追記しています。
import csv
...
...
f = open('test.csv', 'a')
writer = csv.writer(f, quoting=csv.QUOTE_ALL, lineterminator='\n')
row=[]
for td in ret_P.findAll('td'):
row.append(td.text)
writer.writerow(row)
f.close()
これから
グレー行為と言われるものなので、かなり大雑把に書きましたが
上記のプログラムを使えば、
株価情報を配布しているサイトから、日々株価値を取得しつつ、
第二回の株価予想プログラムを使うことで、
毎日、ある企業の株価の予想を実施することができます。
次回は、実際に特定の企業の株価をチェックしつつ、
第二回のプログラムを使って、予想に使えるのか検証していきたいと思います。