質問

Python プログラムを使用して、さまざまな HTML ページからデータを抽出しようとしています。残念ながら、これらのページの一部にはユーザーが入力したデータが含まれており、時折「軽度の」エラー、つまりタグの不一致が発生します。

Python の xml.dom にエラーなどの修正を試みさせる良い方法はありますか?あるいは、エラーを含む可能性のある HTML ページからデータを抽出するより良い方法はありますか?

役に立ちましたか?

解決

// WWW:

あなたはクリーンアップする HTML Tidyのに、または<のhref = "HTTPを使用することができます.crummy.com /ソフトウェア/ BeautifulSoup /」のrel = "nofollowをnoreferrer">解析する美しいスープに。あなたは一時ファイルに結果を保存する必要があることかもしれないが、それが動作するはずです。

乾杯、

他のヒント

以前はこのような作業に BeautifulSoup を使用していましたが、現在は BeautifulSoup に移行しました。 HTML5ライブラリ (http://code.google.com/p/html5lib/)これは、BeautifulSoup が失敗する多くの場合にうまく機能します。

他の代替方法は「」を使用することですエレメントスープ" (http://effbot.org/zone/element-soup.htm) ElementTree を使用した Beautiful Soup のラッパーです

lxml 無効な HTML を解析する際に適切な仕事をします。

彼らの資料によると 美しいスープ そして html5lib 入力に応じてパフォーマンスが向上する場合があります。lxml を使用すると、使用するパーサーを選択し、統合 API 経由でアクセスできます。

Jythonのはあなたに受け入れられる場合は、

、tagsoupはジャンクの構文解析に非常に優れている - それがあれば、私は他のXMLの選択肢よりも使用するJDOMライブラリがはるかに簡単た。

このはTFLの旅プランナーからこする画面で行うにはデモ・モックアップからの抜粋です。

 private Document getRoutePage(HashMap params) throws Exception {
        String uri = "http://journeyplanner.tfl.gov.uk/bcl/XSLT_TRIP_REQUEST2";
        HttpWrapper hw = new HttpWrapper();
        String page = hw.urlEncPost(uri, params);
        SAXBuilder builder = new SAXBuilder("org.ccil.cowan.tagsoup.Parser");
        Reader pageReader = new StringReader(page);
        return builder.build(pageReader);
    }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top