riku_shotokuji
@riku_shotokuji

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

レビュー数の取得ができない

解決したいこと

Pythonでseleniumを用いてスクレイピングをしようとしています。
具体的には下記のようなページにおいて、商品名、価格、レビュー数を取得しようとしています。
https://search.rakuten.co.jp/search/mall/%E5%85%A5%E6%B5%B4%E5%89%A4/
その中で、商品名と価格は取得できたもののレビュー数取得でエラーが発生しました。
解決方法を教えて下さい。

発生している問題・エラー

'list' object has no attribute 'find_element_by_css_selector'

該当するソースコード

# レビュー
elems_title = browser.find_elements_by_css_selector(".dui-card.searchresultitem")

reviews = []

for elem_title in elems_title:
    elem_review = elem_title1.find_element_by_css_selector(".legend")
    review = elem_review.text
    reviews.append(review)
reviews


自分で試したこと

# 価格
elems_title = browser.find_elements_by_css_selector(".dui-card.searchresultitem")
prices = []

for elem_title in elems_title:
    elem_price = elem_title.find_element_by_css_selector(".content.description.price")
    price = elem_price.text
    prices.append(price)
prices

上記だと問題なく出力されます。

elem = browser.find_element_by_css_selector(".dui-card.searchresultitem")
elem_review = elem.find_element_by_css_selector(".legend")
review = elem_review.text
review

単一のレビュー数取得はできました。
python
elem_price = elem_title.find_element_by_css_selector(".content.description.price")

上記のセレクタ名を複数試してみたり、find_element_by_class_nameで試してみたりしましたが出力できません。

勉強を始めて数日で、理解が甘い部分が多いかと思いますが助けていただけると幸いです。

0

2Answer

elems_title = browser.find_elements_by_css_selector(".content.review")をfor文で回して
elem_review = elem_title.find_element_by_css_selector(".legend")で解決できるように思います。
find_elements_by_css_selectorは階層構造に注意する必要があります。

1Like

Comments

ご質問のコード elem_title1.find_element_by_css_selector(".legend") で変数 elem_title1 の名前が間違っているように見えます。 elem_title では。

ところで elem_title1 が未定義なら NameError になるはずですが、 'list' object has no attribute 'find_element_by_css_selector' とのことなので、掲載された部分より前のコードで elem_title1 にリストを代入してあるのではないでしょうか?

0Like

Your answer might help someone💌