主旨
Pythonでのスクレイピングで、繰り返し処理をする場合のコード。
業務上、請求書サイトからひたすら請求書をダウンロードする必要があったので書きました。
サイトの性質上、ボタンをクリックするとPDFを生成する仕様なので、繰り返しクリックするコードになってます。
コード
一覧のページにアクセスした後に、以下を繰り返しています
1.個別ページへいく
2.個別ページのダウンロードボタンを押す
3.一覧ページに戻る
from selenium import webdriver
driver = webdriver.Chrome()
#ここまでで、一覧のページがすでに表示されている前提
for i in range(len(driver.find_elements_by_id("idを指定"))):
es=driver.find_elements_by_id("idを指定")#指定のidで、一覧のページにある要素を全て取得する
es[i].click()#上からi番目をクリック→個別ページへいく
driver.find_element_by_id("idを指定").click()#個別ページのダウンロードボタンを押す
driver.back()#一覧ページに戻る
うまくいかなかった点
上記のコードで、配列を取得してその各要素でfor回せばいいやん?って当初思っていたのですが
実際に動かすとうまくいきませんでした。多分一覧ページに戻った時に、各要素がリセットされてると思われます。
余談
ひたすらダウンロードする処理については、当初会社で導入していたRPA使ってやろうと思ったんですが、色々できなくて挫折しました。
両方いじった結果感じたことですが、RPA使うよりpython覚えた方が30倍くらい早いし汎用性があります。
RPAって、何もわかってない会社の偉い人から金をふんだくるために、コンサルが産み出した魔法の言葉だと思いました。