#前提・実現したいこと
行政がウェブサイトで公開しているデータを自動でダウンロードしてくるクローラーを作成しています。
ダウンロードボタンのhtmlソースは以下のようになっており、javascriptが埋め込まれているようです。
html
1<a href="javascript:*****_download('*****.zip')">ダウンロード</a>
javascript
1function *****_download(fileName) { 2 3 var f = document.dlform; 4 5 var dlPath = "/download/" + fileName; 6 7 f.method = "GET"; 8 f.action = dlPath; 9 f.submit(); 10 11 return; 12} 13
市販の技術書などを参考に以下のようなコードを作成・実行したところ、エラーは出ないものの、データが正しくダウンロードされた気配がありません。
クローラー・スクレイピングは初心者でして、解決策がわからず、ご教示いただけますと幸いです。
python
1# ライブラリをインポート 2import requests 3from bs4 import BeautifulSoup 4import time 5from selenium import webdriver 6from selenium.webdriver.common.keys import Keys 7 8#パラメータ 9CHROME_DRIVER_PATH = "/Users/**********/chromedriver" 10URL = "https://**********.html" 11WAIT_SEC = 10 12 13# 関数の定義 14def __main__(): 15 16 print("begin process") 17 18 driver = webdriver.Chrome(CHROME_DRIVER_PATH) 19 driver.implicitly_wait(WAIT_SEC) 20 driver.get(URL) 21 22 # 該当ページの小要素(ダウンロードリンク)を表示する 23 open_btn = driver.find_element_by_xpath(f'//a[contains(@href,"child_class_dsp_ctrl")]') 24 open_btn.click() 25 26 # ダウンロードボタンを押す 27 download_btn = driver.find_element_by_xpath(f'//a[contains(@href,"zip")]') 28 print(download_btn.is_displayed()) # ダウンロードボタンが表示されているか確認 29 driver.execute_script("arguments[0].click();", download_btn)) 30 31 print("end process") 32 return 33 34#実行 35__main__() 36
#実行結果
$ python downloader.py begin process True end process
あなたの回答
tips
プレビュー