Webスクレイピングを学ぶとよくあるつまずきポイントと対策です。

⚠️ つまずきポイント&対策
1
「find() が None を返す / AttributeError: 'NoneType'...」
find() は要素が見つからないと None を返します。 None に対して .text を呼ぶと AttributeError になります。 if tag: print(tag.text) で確認するか、tag.text if tag else "" を使いましょう。
2
「class_ に _ が必要な理由」
class は Python の予約語(クラス定義に使う)です。 BeautifulSoup では代わりに class_ を使います。 忘れやすいので注意しましょう。
3
「テキストに空白・改行が混じる」
実際の HTML は整形されていないことが多く、.text に余計な空白や改行が含まれます。 必ず .text.strip() または .get_text(strip=True) を使いましょう。
4
「日本語のサイトで文字化けする」
requests でHTMLを取得したとき、response.encoding が正しくない場合があります。 response.encoding = "utf-8" または response.encoding = response.apparent_encoding を設定してから response.text を使いましょう。
5
「JavaScriptで動的に生成されるコンテンツが取れない」
requests + BeautifulSoup では JavaScript 実行後のHTMLは取得できません。 そのような場合は SeleniumPlaywright を使う必要があります(中級以降)。