目的

プロジェクト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()



これから

グレー行為と言われるものなので、かなり大雑把に書きましたが

上記のプログラムを使えば、
株価情報を配布しているサイトから、日々株価値を取得しつつ、
第二回の株価予想プログラムを使うことで、
毎日、ある企業の株価の予想を実施することができます。

次回は、実際に特定の企業の株価をチェックしつつ、
第二回のプログラムを使って、予想に使えるのか検証していきたいと思います。


あなたのワークシートがインターネットにつながる Excel VBAでクローリング&スクレイピング