「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 「find」や「select_one」などの BeautifulSoup 関数が「None」を返すのはなぜですか?

「find」や「select_one」などの BeautifulSoup 関数が「None」を返すのはなぜですか?

2024 年 11 月 22 日に公開
ブラウズ:111

Why do BeautifulSoup functions like `find` and `select_one` return `None`?

BeautifulSoup 関数が None を返す場合がある理由

BeautifulSoup では、find や select_one などの単一の結果を検索する関数は、一致する要素が見つからない場合は None を返します。 HTML。これにより、後続のコードがこれらの None 値を実際の要素であるかのように使用しようとすると、AttributeError 例外が発生します。

None 戻り値の例

次のコード スニペットを検討してください:

html_doc = "..."
soup = BeautifulSoup(html_doc, 'html.parser')
print(soup.sister)
print(soup.find('a', class_='brother'))
print(soup.select_one('a.brother'))
soup.select_one('a.brother').text
  • soup.sister: HTML に タグがないため、None を返します。
  • ]soup.find('a', class_='brother'): クラスを含む タグがないため、None を返します。 「brother.」の属性
  • soup.select_one('a.brother'):Soup.find(...).
  • と同じ理由でNoneを返します。 ]soup.select_one('a.brother').text: None にはテキストがないため AttributeError が発生しますattribute.

AttributeError を回避する方法: 'NoneType' オブジェクトには属性がありません...

AttributeError 例外を回避するには、None の戻り値を適切に処理することが重要です。いくつかのベスト プラクティスを次に示します。

  • 属性にアクセスする前に、条件ステートメントを使用して結果が None かどうかを確認します。
  • 結果を変数に代入し、.has_attr() を使用して特定の属性の存在を確認します。
  • AttributeError 例外をキャッチするには、try ブロックとException ブロックを利用します。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3