2009-05-24 12 views
14

解析されたHTML文書のDOMツリーをブラウズする必要があります。Pythonで不正形式のHTMLを解析する方法

私は時々、私はエラーを取得するlxmlの

で= tidy.parseString(html_code、オプション) DOM = etree.fromstring(STR(a))は

を文字列を解析する前にuTidyLibを使用していますtidylibは不正な形式のhtmlを修復できないようです。

エラーを起こさずにすべてのHTMLファイルを解析できます(修復できないファイルの一部のみを解析する)。すでにlxmlのを使用しているので

答えて

24

Beautiful Soupは無効/壊れたHTML

>>> from BeautifulSoup import BeautifulSoup 
>>> soup = BeautifulSoup("<[email protected])($*><body><table <tr><td>hi</tr></td></body><html") 
>>> print soup.prettify() 
<htm> 
<body> 
    <table> 
    <tr> 
    <td> 
    hi 
    </td> 
    </tr> 
    </table> 
</body> 
</htm> 
13

で良い仕事をしていません、あなたはlxml'sElementSoupモジュールを試してみましたか?

ElementSoupがHTMLを修復できない場合は、データがどのように壊れているかを独自の観察結果に基づいて独自のフィルタを適用する必要があります。

+0

+1、ここではElementSoupが優れた選択肢です。 –

+0

リンクが切断されました。それらを編集しました。うまくいけば、新しい場所には、もともと指していたのと同じ内容が含まれています。 – tripleee

+0

美味しいスープがインストールされていない場合は、Element Soupに必要な場合があります。ちょうど 'pip install beautifulsoup'を実行してください – BobTuckerman

関連する問題