アプリの教科書

アプリ・ウィンドウズで困ったことを調べたブログ

ウィンドウズ10やアプリで困ったことを調べたブログです。

スポンサーリンク


【Visual Studio】Pythonで簡単にスクレイピングするには?

ウェブから情報を収集してデータを抜き出しだしたい場合があります。これはスクレイピングと呼ばれ、商品の現在価格からビットコインの最新値段を入手するのにも便利です。

Pythonでスクレイピング

Paint scrape

スクレイプは削る、こする...といった意味です。

スクレイピングは、IT関連的にはウェブからページを取得して必要な部分を切り出すことを意味します。

 

最新の株価や、ネットショップの特定商品の現在価格など、必要な情報はウェブ上に公開されていることが多いです。

よって、プログラムで定期的に取得することで、分析しやすくなります。ただ過度なスクレイピングは無駄な負荷をサーバにかけることになります。スクレイピングをかける時間間隔を大きくとるなどのマナーは必要でしょう。

 

ウェブページをダウンロードする

まずはウェブページをひっぱってきましょう。

そこで便利なのが「requests」というモジュールです。

「pip install requests」でインストールします。

 

あとは「import requests」で利用を宣言。「requests.get(URL)」でウェブページを取得して「text」プロパティを表示させます。

import requests

site = requests.get("https://komatter.com")
print(site.text)

 

実行するとウェブページのソースが取得できました。

f:id:apicode:20201205114144p:plain

 

 

文字を切り出す

HTMLタグを正規表現を使って抜き出すことができます。

正規表現は最初は複雑で慣れるのが大変ですが、一度慣れてしまえばかなり文字操作には強くなると思います。

 

Pythonでは正規表現は「re」モジュールを使い、指定した表現にマッチする文字列を抜き出すことができます。

以下は<b>と</b>ではさまれた文字列を抜き出す場合です。「r'<b>(.+?)</b>」と規則を記述して「findall」で実行します。

 

import re
pattern = r'<b>(.+?)</b>'
mylist = re.findall(pattern, site.text)
for i in mylist:
 print( i ) 

 

抜き出したら、リストから1つづつ確認用にprintしています。

 

HTMLタグで囲まれた文字を抽出する

正規表現はマスターするのが面倒ですが、もっと簡単にHTMLの情報を抽出できるライブラリがあります。

BeautifulSoup」はその1つで、「pip install beautifulsoup4」でインストールします。

 

まず上記に書いたRequestでサイトの情報を取得します。

そのデータをBeautifulSoupに渡した後は、簡単に情報を抽出できます。

以下はウェブページのタイトル文を取得するサンプルです。

from bs4 import BeautifulSoup
data = BeautifulSoup(site.text, "html.parser")
print(data.title.text)

 

タグの抽出もらくちんで、以下は「a」タグをリストアップしています。

print(data.find_all("a"))

 

株価を抽出する

株価をウェブページから取得して、そこから自分で切り出すこともできます。

が、すでにそれをまとめたモジュールがあるので利用したほうが楽です。

 

まず「pandas_datareader」を「pip install pandas_datareader」でインストールしておきます。

 

以下はパランティア(PLTR)のデータを日にちを指定してダウンロードしてCSVとして保存しています。

import pandas_datareader.data as web
from datetime import datetime

 

myticker = "PLTR"
start = datetime(2020, 10, 1)
end = datetime(2020, 12, 5)
df = web.DataReader(myticker,"yahoo",start,end)
df.to_csv(myticker + ".csv")

 

 

米国版ヤフーからデータを入手しているため、日本株の場合、例えば住友金属鉱山なら「5713.T.」がティッカーとなります。

 

指数にも結構対応しています。主なものは以下。

  • 日経平均:%5EN225
  • SP500:ES=F
  • 石油価格:CS=F
  • ゴールド:GC=F
  • シルバー:SI=F
  • VIX:%5EVIX
  • 10年債:%5ETNX

 

ビットコインなどの情報も取得できます。

ティッカーのところで

  • ビットコイン:BTC-USD
  • ライトコイン:LTC-USD
  • イーサリアム:ETH-USD
  • リップル:XRP-USD

のように指定します。

このブログは、ネットや書籍上の情報、個人の体験や感想を中心にまとめたものです。 正確性を期していはいますが、間違い・誤訳等あるかもしれません。 当サイトの情報によって生じたいかなる損失について一切の責任を負わないものとします. あらかじめご了承ください。

利用規約・プライバシーポリシー |〇問い合わせ