質問: date.text #レビューテキストを出力 print(msh) print(msg) print("-------------") ``` ### 試したこと タグ、クラス名、CSSセレクタなど取得する際のキーは色々試しましたが、 どれもうまくいかず... ### 補足情報(FW/ツールのバージョンなど)
回答: もう少し柔軟にやりましょう。 ``` from time import sleep # その他のimport、driver宣言、サイト接続まで略 # スクロールするといくらでもレビューが現れるので適宜歯止めをきかす MAX_SCROLE = 10 current_source = '' for _ in range(len(MAX_SCROLE)): if current_source == driver.page_source: break current_source = driver.page_source driver.execute_script('scrollTo(100, document.body.scrollHeight)') sleep(2) reviews = set() for div_tag in driver.find_elements_by_class_name('l-column--grid'): one_data = {} # 辞書型 one_data['star_cnt'] = int(div_tag.find_element_by_tag_name('figure').get_attribute('aria-label')[0]) # 「1/5」などとなっているので[0]で先頭の1文字だけを取得する one_data['title'] = div_tag.find_element_by_tag_name('h3').text one_data['date'] = div_tag.find_element_by_tag_name('time').text #YYYY/MM/DD形式 one_data['comment'] = ''.join([p_tag.text for p_tag in div_tag.find_elements_by_tag_name('p')]) reviews.add(one_data) print(reviews) ``` 以下ポイントです。 * 下の方にスクロールしていくと全てのレビューが表示されます。今回は数が多すぎるのでMAX_SCROLEで歯止めをきかせてやりましょう。 * class属性が`l-column--grid`のタグはうまいこと各四角にしか適用されていないので、これを元にループを回してやりましょう。 * さらにその配下で欲しい4要素も全てタグの種類が違い、なおかつp以外は各四角の中に1つずつしか存在しないので、tag名で取得してやりましょう * コメントは改行されると複数のpタグに入るようになっているようですが、この四角の中のpタグは全てコメント(コメント以外のpタグが存在しない)ので、全pタグのテキストを連結させてやりましょう。string型のメソッド`join`とリストの内包表記はスクレイピングと全く関係ないpythonの手法なので適宜ググってください。 ちゃんと動かしていないので書き間違えなどあったらすみません。