@recollect14th (匠 榊原)

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!

BeutifulSoupで無慈悲のNoneを消したい、そしてどこのタグを考えればよいか分からない

解決したいこと

Webスクレイピング初心者です。

今,Udemyのとあるコースのレビューを抜き出すためコードを書こうとしていたのですが、無慈悲にもNoneが返ってきました。
恐らくかなり初歩的なミスを犯しているとは思いますが、どこをどうすれば良いのか何卒ご教授お願いいたします。

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

None

または、問題・エラーが起きている画像をここにドラッグアンドドロップ

該当するソースコード

import requests
from bs4 import BeautifulSoup

url = "https://www.udemy.com/course/statistics_basic/"
response=requests.get(url)
soup=BeautifulSoup(response.content, "html.parser")

comments = soup.find("div", attrs={"data-purpose": "indivisual-review"})

print(comments)

自分で試したこと

上のコードの、上から六行目の後ろに.textを付けるとそれはそれでエラーになるので付けていません。
どこが間違えているのか皆目見当もつかない状態ですが、そもそもほしいデータを抜き出すためにどこのタグを考えれば良いのか分からない状態です。
スクリーンショット 2022-07-15 204856.png
スクレイプしたい箇所の周辺の、解析画像を載せておきます。長い黒線部を抜き出すにはどこのタグ(どこのdiv)をコードに書けば良いか教えて下さるととても助かります。本当に初歩的な質問で申し訳ありません。厚かましいお願いではあると思いますが、何卒よろしくお願いします。

0 likes

3Answer

レビュー部分のタグはブラウザがページを開いたときに JavaScript を実行して動的に挿入しています。 Beautiful Soup はブラウザではないため JavaScript を実行できず、レビューがない状態のページしか扱えないので、抜き出せません。

対応としては、 Python でブラウザを操作して得たページのソースを Beautiful Soup に食わせるか、ブラウザを操作して抜き出しまで行える requests-html のようなライブラリを使うかが考えられます。以下のページを参考にしてください。

0Like

回答ありがとうございます。コメントの取得も、教えてくださった方法を使わない限り不可能という認識でよろしいでしょうか。

0Like

コメントの取得も、教えてくださった方法を使わない限り不可能という認識でよろしいでしょうか。

そうです。

0Like

Your answer might help someone💌