1. ホーム
  2. パイソン

[解決済み】PythonでHTMLをパースする

2022-04-07 01:54:32

質問

私はPythonのリスト/辞書/オブジェクトの形でタグを得るのを助けることができるPythonのためのHTMLパーサーモジュールを探しています。

形式のドキュメントがあれば

<html>
<head>Heading</head>
<body attr1='val1'>
    <div class='container'>
        <div id='class'>Something here</div>
        <div>Something else</div>
    </div>
</body>
</html>

にあるコンテンツやテキストを取得できるように、HTMLタグの名前またはIDを使用してネストされたタグにアクセスする方法を提供する必要があります。 div というタグを class='container' の中に含まれている body タグのようなものです。

Firefox の "Inspect element" 機能 (HTMLを表示) を使ったことがある人なら、すべてのタグをツリーのようにきれいに入れ子にして表示してくれることを知っていると思います。

私はビルトインモジュールを希望しますが、それは少し要求が多すぎるかもしれません。


Stack Overflowやインターネット上のブログで多くの質問を見ましたが、そのほとんどがBeautifulSoupやlxml、HTMLParserを提案しています。しかし、これらのほとんどは機能を詳しく説明しておらず、単にどれがより速く、より効率的かという議論に終わっています。

解決方法は?

<ブロッククオート

bodyタグの中にあるclass='container'のdivタグにあるコンテンツ/テキストを取得するように依頼できるように。 または似たようなもの。

try: 
    from BeautifulSoup import BeautifulSoup
except ImportError:
    from bs4 import BeautifulSoup
html = #the HTML code you've written above
parsed_html = BeautifulSoup(html)
print(parsed_html.body.find('div', attrs={'class':'container'}).text)

性能の説明は必要ないでしょう。BeautifulSoupがどのように機能するかを読めばいいのです。その 公式ドキュメント .