美しいスープは、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
)などの潜在的な例外を処理することを忘れないでください。
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;) find_all()
でCSSセレクターまたは柔軟な属性マッチングを使用して、HTML構造のバリエーションに対応します。変更される可能性のある特定のクラス名またはIDに依存する代わりに、より一般的なセレクターまたは属性を使用することを検討してください。属性エラー
を避けてください。条件付きステートメントを使用します(eg、 if element:
)。 strip()
メソッドと正規表現はこれに役立ちます。エラー処理を備えた例:
<code class="python"> try = soup.find( "" "見つかった。&quot;)</code>
スクレイピングWebサイトは、常にWebサイトの robots.txt
ファイルとサービス条件を尊重する必要があることを忘れないでください。過度のスクレーピングはサーバーを過負荷にし、IPアドレスがブロックされる可能性があります。
以上がHTMLを解析するために美しいスープを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。