pythonのスクレイピングで一件だけ(find_element_by_css_selector)の取得の場合、
もし取れないであったり、なかったりするとエラーが起きてしまいます。
* driverの作り方は前記事を参考にしてください。
https://kazunaka.com/%e3%82%b9%e3%82%af%e3%83%ac%e3%82%a4%e3%83%94%e3%83%b3%e3%82%b0%e3%81%a7chromedriver%e3%82%92%e8%b5%b7%e5%8b%95%e3%81%95%e3%81%9b%e3%82%8b/
それを防ぐため、あえて複数で取得して
先頭の取得した値を返すメソッド作ってみました。
@classmethod
def find_element_by_css_selector(cls, driver, path):
"""
Webブラウザから要素を取得する(1件用)
driver.find_element_by_css_selector
"""
record = Const.NONE
try:
if driver != Const.NONE and path != Const.NONE:
record_list = driver.find_elements_by_css_selector(path)
record = WebManager.get_list_check(record_list, 0)
except Exception as e:
print(e)
print("find_element_by_css_selectorエラー:" + path)
return Const.NONE
return record
使い方は適当なクラスに上記の関数を書いてあげて、呼び出してあげればOKです。
WebManagerというクラスに書いたとしての、呼び出し方の例を書いておきます。
hoge_value = WebManager.find_element_by_css_selector(driver, "div.hogehoge")
これでもし取得がなくてゼロ件であっても、エラーが起こることがなくなりました。
もちろんゼロ件はありえない場合は、
エラーを起こしてしまって止めてしまうのも一つの手だと思います。
今回は動きのあるサイトを見る時に、
ゼロ件の場合が起こるため使った手法になります。
スクレイピングで一件の取得時にゼロ件の場合でも
エラーを起こさない取得の方法でした。
コメント