0

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

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

4

4 に答える 4

3

HTML Tidyを使用してクリーンアップするか、Beautiful Soupを使用して解析することができます。結果を一時ファイルに保存する必要があるかもしれませんが、うまくいくはずです。

乾杯、

于 2009-07-18T09:33:48.143 に答える
0

jython が受け入れられる場合、tagsoup はがらくたの解析に非常に優れています。そうであれば、jdom ライブラリは他の xml の代替手段よりもはるかに使いやすいことがわかりました。

これは、tfl のジャーニー プランナーからのスクリーン スクレイピングを行うデモ モックアップのスニペットです。

プライベート ドキュメント getRoutePage(HashMap params) が例外をスローします {
        文字列 uri = "http://journeyplanner.tfl.gov.uk/bcl/XSLT_TRIP_REQUEST2";
        HttpWrapper hw = new HttpWrapper();
        文字列ページ = hw.urlEncPost(uri, params);
        SAXBuilder builder = new SAXBuilder("org.ccil.cowan.tagsoup.Parser");
        リーダー pageReader = new StringReader(page);
        builder.build(pageReader); を返します。
    }
于 2009-07-19T03:54:23.673 に答える
0

私はそのようなタスクに BeautifulSoup を使用していましたが、現在はHTML5lib ( http://code.google.com/p/html5lib/ ) に移行しており、BeautifulSoup が失敗する多くの場合にうまく機能します。

別の方法として、ElementTree を使用した Beautiful Soup のラッパーである「 Element Soup」( http://effbot.org/zone/element-soup.htm ) を使用する方法があります。

于 2009-07-18T10:05:53.913 に答える
0

lxmlは、無効な HTML の解析において適切な仕事をします。

ドキュメントによると、入力によってはBeautiful Souphtml5libのパフォーマンスが向上することがあります。lxml を使用すると、使用するパーサーを選択し、統合された API を介してそれらにアクセスできます。

于 2009-07-18T10:31:53.567 に答える