スクレイピングで一件の取得時にゼロの場合のエラーを防ぐ

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")

これでもし取得がなくてゼロ件であっても、エラーが起こることがなくなりました。

もちろんゼロ件はありえない場合は、
エラーを起こしてしまって止めてしまうのも一つの手だと思います。

今回は動きのあるサイトを見る時に、
ゼロ件の場合が起こるため使った手法になります。

スクレイピングで一件の取得時ゼロ件の場合でも
エラーを起こさない取得の方法でした。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次