RedandWhiteDays

赤、白、ときどき黒猫

DAY1 : 初めてのWebスクレイピング

分析をはじめるにあたって、当然必要となるのがデータだ。
したがって本ブログの前半部はデータ収集の手法を確立する過程を記すこととなる。
今回はPython3.5を使って、必要な情報をサッカーの情報サイトからwebスクレイピングすることにした。



まず当面は特定の1試合についての情報収集を自動化することを目標にする。
今回対象としたのは2016/01/02に行われたSunderland 3-1 Aston Villaの試合。
新年初戦を久々の勝利で終えることができ、安堵したファンの方も多いだろう。
まずはこの試合のシュート情報を読み取ることとする。


次の画像はfoufourtwoが公開しているその試合のシュートに関してのデータである。

f:id:redandwhite:20160112160351j:plain

ここから情報を読み取っていく。


webのソースを見てみると、それぞれの線は

<line class="

から始まるタグで管理されていることが分かった。
それを踏まえて正規表現を用いてデータを抽出する以下の関数を定義した。

import urllib.request
import re

def scrape_stats_lines(url):
    response=urllib.request.urlopen(url)
    html=response.read()
    r=re.compile('<line class=[^\d]*\d-(\d+)[^\d]*x1="([\d.]+)" y1="([\d.]+)" x2="([\d.]+)" y2="([\d.]+)" style="stroke:([a-z]+);')
    lines=r.findall(str(html))
return lines

実行結果を可視化してみると以下。
f:id:redandwhite:20160112161640p:plain

正常に動作していることが確認できる。