ホームページ > バックエンド開発 > Python チュートリアル > HTMLを解析するために美しいスープを使用するにはどうすればよいですか?

HTMLを解析するために美しいスープを使用するにはどうすればよいですか?

James Robert Taylor
リリース: 2025-03-10 18:54:18
オリジナル
998 人が閲覧しました

美しいスープを使用してHTMLを解析するにはどうすればよいですか?

美しいスープは、HTMLおよびXMLドキュメントを解析するために設計されたPythonライブラリです。指定されたHTMLから解析ツリーを作成し、データを簡単にナビゲート、検索、変更できます。それを使用するには、最初にPIPを使用してインストールする必要があります: pipインストールbeautifulsoup4 。次に、Pythonスクリプトにインポートし、HTMLコンテンツを解析するために使用できます。基本的な例は次のとおりです。

 <code class="python"> BS4からBeautifulSoup Import requests#htmlコンテンツを取得します(urlに置き換えます)url =&quot; https://www.example.com" response = requests.get(url)respons.raise_for_status()タイトルタグ印刷(soup.find_all(&quot; p&quot;))#すべての段落タグを印刷</code> 
ログイン後にコピー

このコードは、 requests ライブラリを使用してURLからHTMLをフェッチします( pipインストール を使用して個別にインストールする必要があります)。次に、 beautifulSoup コンストラクターを使用してHTMLコンテンツを解析し、「html.parser」をパーサーとして指定します。最後に、&lt; title&gt; タグにアクセスし、すべての&lt; p&gt; タグを見つけることを示しています。ネットワークエラー( requests.exceptions.requestexception.requestexception )などの潜在的な例外を処理することを忘れないでください。

HTMLからデータを抽出するための最も一般的な美しいスープ方法は何ですか?最も一般的なものには、
  • find() and find_all()これらは美しいスープの主力です。 find()指定された基準に一致する最初のタグを返し、 find_all()はすべての一致するタグのリストを返します。基準は、タグ名(例: "p"、 "a")、属性({"class": "my-class"、 "id": "my-id"})、または両方の組み合わせです。また、より複雑なマッチングに正規表現を使用することもできます。
  • select()この方法では、CSSセレクターを使用してタグを見つけます。これは、特に複雑なHTML構造を扱う場合、特定の要素をターゲットにする強力で簡潔な方法です。たとえば、 soup.select(&quot; .my-class p&quot;)は、クラス「私のクラス」を持つ要素内のすべての&lt; p&gt; タグを見つけます。 HTML要素から実際のテキストを取得するには非常に貴重です。
  • attrs :この属性は、辞書としてのタグの属性へのアクセスを提供します。たとえば、 tag [&quot; href&quot;] は、 href 属性の値を返します。 .next_sibling .previous_sibling など。これらの方法により、HTML構造を通過すると関連要素を見つけることができます。 class = "python">#...(スープを取得する前のコード)... first_paragraph = soup.find(&quot; p&quot;)all_paragraphs = soup.find_all(&quot; p&quot;)first_paragraph_text = first_paragraph.get_text()print(f&quot; quot; quot;段落:{len(all_paragraphs)}&quot;)

    美しいスープで解析するときに、さまざまなHTML構造と潜在的なエラーを処理するにはどうすればよいですか?バリエーションと潜在的なエラーを処理するには、これらの戦略を検討してください。
    • 堅牢な解析: pythonに組み込まれている「html.parser」(デフォルト)のような寛容なパーサーを使用します。 「LXML」(これはより高速ですがより厳しい)のような他のパーサーよりも奇形のHTMLのハンドリングが優れています。
    • 柔軟な選択: find> find and find_all()でCSSセレクターまたは柔軟な属性マッチングを使用して、HTML構造のバリエーションに対応します。変更される可能性のある特定のクラス名またはIDに依存する代わりに、より一般的なセレクターまたは属性を使用することを検討してください。
    • 存在を確認してください:属性または子要素にアクセスする前に、要素が存在するかどうかを常に属性エラーを避けてください。条件付きステートメントを使用します(eg、 if element:)。
    • データのクリーニング:抽出後、データをクリーニングして、エクストラホワイトスパース、Newline Characters、HTMLエンティティなどの矛盾を処理します。 pythonの strip()メソッドと正規表現はこれに役立ちます。

    エラー処理を備えた例:

     <code class="python"> try = soup.find( "" "見つかった。&quot;)</code> 
    ログイン後にコピー

    美しいスープはJavaScriptレンダリングされたコンテンツを処理できます。美しいスープは、最初にダウンロードされたHTMLで動作します。 JavaScriptを実行しません。 JavaScriptはページの読み込み後にコンテンツを動的にレンダリングするため、美しいスープはJavaScriptレンダリングコンテンツを処理するための初期の静的HTMLのみを見ます。代替品が必要です:
    • セレン:セレンは、ブローザー自動化ツールです。ページを完全に読み込み、JavaScriptが実行できるようになり、美しいスープを使用して、結果のHTMLをブラウザのDOMから解析できます。これは強力だが遅い方法です。
    • 劇作家:セレンと同様に、劇作家はWebオートメーション用のnode.jsライブラリ(Pythonバインディング付き)です。
    • ヘッドレスブラウザー(セレンまたは劇作家付き):ヘッドレスモードでブラウザを(目に見える窓なしで)効率を向上させるために実行します。非推奨。これらは通常有料サービスですが、大規模なスクレイピングに便利です。

    スクレイピングWebサイトは、常にWebサイトの robots.txt ファイルとサービス条件を尊重する必要があることを忘れないでください。過度のスクレーピングはサーバーを過負荷にし、IPアドレスがブロックされる可能性があります。

以上がHTMLを解析するために美しいスープを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート