PtyhonでWEBスクレイピング

358 Views

April 03, 24

スライド概要

[第6回大阪sas勉強会]森本 敦

profile-image

SAS言語を中心として,解析業務担当者・プログラマなのコミュニティを活性化したいです

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

PythonでWEBスクレイピング 株式会社エス・シー・エー 森本 敦

2.

背景 ここ最近、Pythonが流行しているようです。 Googleで調べると、出来る事がたくさんある模様。 その中で、WEBスクレイピングに興味を持ちました。 競馬のデータ解析をしてみたいと思ったからです。 その第一歩として、データ収集をやってみました。 WEBスクレイピング: プログラムでウェブサイトの情報を取得、加工する事

3.

今回やってみたこと① 1、JRA(日本中央競馬会)のウェブサイトから、 2019年の有馬記念のデータを取得。 http://www.jra.go.jp/datafile/seiseki/g1/arima/re sult/arima2019.html 2、HTMLの構文解析 3、取り出したデータをエクセルで保存する。

4.

今回やってみたこと② 下記の1着馬のデータを取得(馬名、性別、騎手、タイム)

5.

プログラムコード① #Python 3.7.0 #ライブラリのインポート import requests #ウェブサイトのデータを取得 from bs4 import BeautifulSoup #HTMLの構文解析 import openpyxl as px #エクセル書きこみ #2019年有馬記念の結果 (JRAのウェブサイト) url = "http://www.jra.go.jp/datafile/seiseki/g1/arima/result/arima2019.html" #ウェブサイトのデータを取得 req = requests.get(url) #HTMLの構文解析 soup = BeautifulSoup(req.content, 'html.parser') print(soup) #1着馬の情報を取得 _horse =soup.find("td",class_="horse").string.strip() #馬名 _age =soup.find("td",class_="age").string.strip() #年齢 _jockey=soup.find("td",class_="jockey").string.strip() #騎手 _time =soup.find("td",class_="time").string.strip() #タイム

6.

プログラムコード①実行後 HTML情報を取得し、 収集したいデータがどのあたりにあるか確認

7.

プログラムコード② #Excel定義 wb=px.Workbook() ws=wb.active ws.title="有馬記念" #Sheet名変更 #ヘッダ値 (1行目) ws.cell(row=1,column=1, value="開催年") ws.cell(row=1,column=2, value="馬名") ws.cell(row=1,column=3, value="年齢") ws.cell(row=1,column=4, value="騎手名") ws.cell(row=1,column=5, value="タイム") #取得したデータをエクセルへ書き込み (2行目) ws.cell(row=2,column=1, value=2019) ws.cell(row=2,column=2, value=_horse) ws.cell(row=2,column=3, value=_age) ws.cell(row=2,column=4, value=_jockey) ws.cell(row=2,column=5, value=_time) #エクセルファイルへの出力(Desktopに保存) wb.save(r"C:¥Users¥xxxxxx\sca_morimoto¥Desktop¥result.xlsx")

8.

プログラムコード②実行後 出力結果(エクセル)

9.

まとめ ⚫ ⚫ ⚫ requests, BeautifulSoup, openpyxlのライブラ リで、WEBスクレイピングが可能 前提として、HTMLの知識が必要 ウェブサイトによって、HTMLの構造が異なるの で、注意が必要(タグやClassの名称が違う)