前提・実現したいこと
こんにちは、プログラミング3日目の初心者です。Python/selenium/chromeでウェブクロールをしたいと考えており、xpath等で要素を指定してページを行き来することにもなれてきました。
今クローリングしたいページは、毎日更新されるため、指定したい要素が1つ〜3つで変動します。例えば、開きたいリンク(要素)が3つある日は、3つの要素をしていしたコードで実行すれば問題ありませんが、リンクが1つしかない場合だと、そこでエラーが起こりクローリングが止まってしまいます。
このように、要素が指定できない場合(no such element)、それをスキップして次の段階に行く方法はありますか?
それとも、要素の数をカウントして、条件分岐でリンクをクリックするなどの回避が必要でしょうか。
該当のソースコード
python
1# info01~03をクリック 2driver_info01 = driver.find_element_by_xpath('/html/body/~~~~a[1]') 3time.sleep(2) 4 5# 要素を新しいタブで開く 6actions = ActionChains(driver) 7actions.key_down(Keys.COMMAND) 8actions.click(driver_info01) 9actions.perform() 10time.sleep(6) 11print("info01をクリックした") 12 13# 今開いたタブを閉じる 14handle_array = driver.window_handles 15driver.switch_to.window(handle_array[-1]) 16driver.close() 17 18# info02 以下同文です 19driver_info02 = driver.find_element_by_xpath('/html/body/div[5]/div[4]/div[5]/div[2]/div/div[1]/div[3]/ul[1]/a[2]') 20time.sleep(2) 21actions = ActionChains(driver) 22actions.key_down(Keys.COMMAND) 23actions.click(driver_info02) 24actions.perform() 25time.sleep(6) 26handle_array = driver.window_handles 27driver.switch_to.window(handle_array[-1]) 28driver.close()