Seleniumで将棋DB2のkifファイルをダウンロードする

こんなかんじ (python3)

  • 棋譜のエクスポートは動的にやってるらしいのでSeleniumがよい
  • form_elementsは余計な要素が取れるのでtextareaでフィルタする(棋譜とは限らないのだが妥協)
  • ループするときは sleep入れたほうが良い
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()

url = "https://shogidb2.com/games/ea079e5a034bc9783f794a51ae40bcfa06fd9f0a"
driver.get(url)

export_link = driver.find_element(By.ID, 'kif-export')
export_link.click()

form_elements = driver.find_elements(By.CLASS_NAME, 'form-control')
kifu_textarea = list(filter(lambda x: x.tag_name == 'textarea', form_elements))[0]
kifu_text = kifu_textarea.get_attribute('value') 

filename = url.split('/')[-1] + '.kif'
with open(filename, 'w') as f:
    f.write(kifu_text)

driver.close()