前提・実現したいこと
seleniumでスクレイピングを行っています。
口コミサイトを2,3ページ習得したいのですが、class/id名がなく、table > tbody > tr > tdの構成が続きます。
○○個目のtdなどと指定すると大量にありすぎて数えられません、、
table > tbody > tr > tdの構成で、「table直下のtbody、tbody直下のtr, tr直下のtdの3番目」など指定することは可能でしょうか。
該当のソースコード
URL:https://review.rakuten.co.jp/search/-/100227/?l2-id=review_PC_top_GenreSearch
特定したい箇所:<div align="center" id="search_main">の中にある、カーソルが当たっているtdの3番目(<td width="100%">...</td>)
※1,2番目のtdタグの▶︎を押して辿っていくとかなりの数のtdがあります。。
特定したい箇所の詳細は、上記添付画像の3番目のtd内にある「このレビューのURL」というaタグです(こちらもclass/id名無し)
試したこと
試しに3番目のtd内にあるh1タグ(class名:search_keyword)のテキストを出してみようと思いました。
python
1 sample_1 = browser.find_element_by_id("search_main").find_elements_by_css_selector("table > tbody > tr > td")[2] 2 sample_2 = sample_1.find_element_by_css_selector(".search_keyword").text 3 print(sample_2)
エラーは以下の通りになります。
python
1selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".search_keyword"} 2 (Session info: chrome=87.0.4280.88)
ちなみにこのh1タグ(class名:search_keyword)はページ内に一つしか無いため、
python
1 # sample_1 = browser.find_element_by_id("search_main").find_elements_by_css_selector("table > tbody > tr > td")[2] 2 sample_2 = browser.find_element_by_css_selector(".search_keyword").text 3 print(sample_2)
とするときちんとテキスト表示がprintされます。
どなたかアドバイスいただけますと幸いです。よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/23 10:47
2020/12/23 10:54
2020/12/23 10:55