Python+Selenium+Chromeのウェブスクレイピングで,スペースが入った要素を取得する
Python+Selenium+Chromeのウェブスクレイピングでは,by_class_nameでスペースが入った要素を取得することができませんので,取得できる手法を紹介します.
有料枠設定にしていますが,下記のサイトで他の記事もみれます.youtubeの投げ銭的な物として,お考えください.
by_css_selectorを使用
メソッドをby_class_nameではなくby_css_selectorにして,取得します.
また,by_css_selectorでは,要素の頭と間にあるスペースに「.」を入れる必要があります.
修正前
elem_sample = driver.find_elements_by_class_name("a-link-sample a-text-normal")
修正後
elem_sample = driver.find_elements_by_css_selector(".a-link-sample.a-text-normal")
ただし,僕の場合,上記の手法で複数要素を取得しようとすると,100個の要素の内10個しか取得されないような,漏れが発生しました.
そこで,僕は次の手法を主に使っています.
by_xpathを使用
by_css_selectorで複数要素を取得しようとすると,漏れが発生しましたので,by_xpathを利用した手法も紹介します.
修正前
elem_sample = driver.find_elements_by_class_name("a-link-sample a-text-normal")
修正後
elem_sample = driver.find_elements_by_xpath('//div[@class="a-link-sample a-text-normal"]')
まとめ
by_class_nameでスペースが入った要素を取得するために,by_css_selectorとby_xpathを利用した2つの手法を紹介しました.
これでPython+Selenium+Chromeのウェブスクレイピングもまた,使いやすくなると思います.
参考サイト
ここから先は
0字
¥ 100
この記事が気に入ったらチップで応援してみませんか?