こんにちは。はるさらでございます。
以前は1ヶ月分の当選番号を取得しましたが
今回は3ヶ月分の当選番号を
取得する方法を説明していきます。
下記の写真にもある通り
みずほ銀行さんのHPでは
X月分を1ページとして表示させているため
違う月の情報を取得する際には
ページを遷移させてあげる必要があります。

コーディング
以下、コードを入力することで
Webページが開き、初めに表示した月のページの情報を取得した後に
次の月のページへ遷移させて同じように
情報を取得していくように実装しています。
コンソールには
取得した
3ヶ月分の当選番号が表示されます。

↓以下、ソースです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | from selenium import webdriver import time from selenium.common.exceptions import NoSuchElementException driver = webdriver.Chrome(executable_path = ".\chromedriver.exe" ) try : for month in range ( 5 , 8 ): driver.get( "https://www.mizuhobank.co.jp/retail/takarakuji/numbers/numbers3/index.html?year=2020&month=" + str (month) + "") # 5秒程停止 time.sleep( 5 ) # 1ページ分の抽選日、抽選番号を取得 try : for i in range ( 1 , 30 ): # CSSセレクタを使用して、抽選日を取得 tyusenbi = driver.find_element_by_css_selector( '#mainCol > article > section > section > section > div > div:nth-child(1) > table:nth-child(' + str (i) + ') > tbody > tr:nth-child(1) > td' ); tyusenbi_text = tyusenbi.text # CSSセレクタを使用して、回別を取得 kaibetsu = driver.find_element_by_css_selector( '#mainCol > article > section > section > section > div > div:nth-child(1) > table:nth-child(' + str (i) + ') > thead > tr > th.alnCenter.bgf7f7f7.js-lottery-issue-pc' ); kaibetsu_text = kaibetsu.text # CSSセレクタを使用して、抽選数字を取得 tyusenNo = driver.find_element_by_css_selector( '#mainCol > article > section > section > section > div > div:nth-child(1) > table:nth-child(' + str (i) + ') > tbody > tr:nth-child(2) > td > strong' ); tyusenNo_text = tyusenNo.text print (tyusenbi_text + '/' + kaibetsu_text + '/' + tyusenNo_text) except NoSuchElementException as e: # エラー発生もしくは、検索対象が無くなった場合に遷移する print ( str (month) + '月終了' ) except NoSuchElementException as e: # エラー発生もしくは、検索対象が無くなった場合に遷移する print ( '探索終了' ) # ページのクローズ driver.close() |
処理の解説
前回の記事のソースと差分がある箇所だけ
解説していきます。
前回の記事は下記より
https://harusara22.work/category/python/
9行目
・for文を使用してループするように設定しています。
ここで何月~何月までを取得するかを設定しています。
range(5, 8):
・上記のように書くことで5月~7月の
ページへ順番に遷移するようになります。
10行目
・ここで実際にURLに表示したい月を設定して
ページにアクセスすることになります。
13行目
・自動で画面に連続アクセスする際は
アクセスする間隔を少し開けてあげないと
相手のサーバに負荷がかかってしまいます。
最悪、攻撃を受けていると
認識されて、裁判沙汰になってしまうこともあるので
実装する際は忘れないようにしましょう。
34行目
3ヶ月分連続で出力されてしまうと
少し見づらいものがあったため
1月分のデータの取得が終わったら
「6月終了」
とメッセージを出力させています。
これにより、3月分の抽選結果を
まとめてコンソールに表示させることが可能になります。
今日はここまで!
次回は、取得した結果を
CSVに出力する方法を記載したいと思います。
それではまたー!!