前提・実現したいこと
全くの趣味の話の質問で、大変恐縮なのですが、
keirin.jpで公開している、「開催日程」ページ(http://keirin.jp/pc/raceschedule)から検索できる、
過去の全レースのデータを取得したいと思っています。
Beautifulsoup、Requests、Seleniumで、できる限りシンプルなコードで実現したいと思っています。
取得したいデータは、keirin.jpで公開している「開催日程」ページから閲覧可能な、各レースの以下の内容です。
・1999年1月~2021年8月(開催済みレース)の全レースに対する、
・各レースの「初日~最終日」の、「R1~最終R(例えばR1~R10とか)」に対する、
・「開催日」「レースプログラム」「天候」「払戻金」「着順」「基本情報」「直近成績」「当場成績」「オッズ」「コメント着度数」「競争結果」「選手名」(プロフィール/通算成績)
の、文字データです。
発生している問題・エラーメッセージ
まずは各ページを表示させ、データが取得できるかというところをやっていました。
欲しいデータがありそうなページのリンクに関する情報が、以下のような情報になっていて、
どのように指定すれば、リンク先に行けて情報が取得できるのか分からず、途方に暮れてしまいました。
「<a data-pprm-dkbn="1" data-pprm-encp="Op5YUKjlmvIFbWItz0h98Iu4KiydX8VNIIrdFfcTVJ0"
data-pprm-href="/pc/racelist" href="javascript:void(0);">」
※すべて、このような形ではないかも知れませんが、いずれにしても遷移先のURLがわからないケースです。
URLが分かり、以下のように指定して情報を入手するということをイメージしていました。
load_url = "リンク先のURL"
html = requests.get(load_url)
soup = BeautifulSoup(html.content, "html.parser")
該当のソースコード
import requests
from bs4 import BeautifulSoup
load_url = "http://keirin.jp/pc/raceschedule?scyy=2001&scym=01"
html = requests.get(load_url)
soup = BeautifulSoup(html.content, "html.parser")
links = soup.find_all('a')
print(links)
試したこと
スクレイピングの超初心者です。(keirinも初心者です。)
「Octoparse」などの外部のスクレイピングサービスを使わず、Beautifulsoup、Requests、Seleniumで、
できる限りシンプルなコードで実現できるような方法を探しています。
(外部サービスが、突然使えなくなったりすると困ってしまうし、自作のコードであれば、自分で手直しもできるだろうと、
あくまで自分でコードを書いて実現したいと思っています。)
多くのPythonのスクレイピング関連の本を見ましたが、遷移先のURLが取得できるケースでの紹介がほとんどで、
基本的なことしか書いてないか、逆に記載がありそうな本であっても、ずばりのケースの紹介ではなく、
合わせて初心者には難し過ぎて理解が出来ない内容のどちらかで、
今回のようなケースの情報を得るにも、Webでどのように検索すれば、たどり着けるのかも分からず困っています。
Keirin.jpのデータをスクレイピングする方法など、紹介のあるサイトもありますが、
重要な部分が書かれていないか、外部スクレイピングサービスが紹介されているものでした。
補足情報(FW/ツールのバージョンなど)
Windows10
python 3.9.5