サイト上の特定の情報を抜き出す(その1)
Webスクレイピングの練習で、HTMLから好きな情報を抜き出す方法を模索しています。今回はHTMLデータの中から特定<td>xxx</td>を抜き出したいと思ってます。
なお、当サイトで紹介する方法は、スクレイピングするサイトの規約違反に当たらぬよう心がけています。当サイトを参考に施行する際は規約に抵触したり、スクレイピング対象のサイトへの負荷が掛かりすぎないように等、配慮して行うようにしてください。
やりたいこと
Webスクレイピングはやってみたい、習得したいスキルなのですが、「じゃあやりたいことはなんですか?」と言われると困ります。特にありません。でも、何か出てきた時にできるように、鍛えておきたいと思います。筋トレみたいな感じですね。
はい、前置きはここまでとして、今回やりたいことは以下の通りです。
ドラクエウォークの攻略サイトから目がモンスターの出現期間を取得したい!
ドラクエウォークを知らない人からしたら「何言ってんだ?」という感じだと思いますが、要はスマホゲームの攻略サイトからイベントの開催期間を取得したいということです。もっとデフォルメすると、とあるサイトからイベント開催日を取得したい、という感じでしょうか。
やりたいこと(具体的に)
こちらのサイトをお借りしようと思います。
https://game8.jp/dqwalk/420884
こんなサイトになっています。このサイトの、以下のような「出現期間」が欲しい情報です。
Webスクレイピングの準備
まずは環境を整えます。私はPythonの勉強の延長で実施するので、Pythonという前提で、且つPythonの実行環境は整っているものとして進めます。
スクレイピングをするための準備メモ(外部ライブラリのインストール等)はこちらの記事に書いてあります。
HTMLデータの取得
スクレイピング対象となるサイトのHTMLデータを取得します。方法は2つです。
- Pythonでスクリプトを作って取得する
- ブラウザの機能を使って取得する
1番は王道と言うか、Webスクレイピングするなら必須スキルですね。しかし、サイトによってはいかなるスクレイピングも禁止しており、自動取得をすべきでないサイトで、自動化しない用途(HTML分析の練習等)なら2番を選ぶ方が無難です。
1番の方法(スクリプト作成)は以下のようなコードでできます。
import os
from bs4 import BeautifulSoup as soup
# Get HTML from website
import requests
response = requests.get(r"https://game8.jp/dqwalk/420884")
New_File_Name = "Sunrise_Slime"
Temp_DateTime = Return_Formated_Date(0)
New_File_Name = New_File_Name + ".html"
with open(New_File_Name, "w") as Out_File:
Out_File.write(response.text)
2番の方法は、Google Chromeの場合は「Ctrl+U」を押せば新しいタブでコードの表示ができるので、それをコピペして保存します。