2009-07-18 9 views
0

私はPythonプログラムを使用して、さまざまなHTMLページから一部のデータを抽出しようとしています。残念なことに、これらのページの一部には、ユーザー入力のデータが含まれていることがあります。このデータには、「タグの不一致」というエラーがあります。Pythonのxml.domと悪いXML

Pythonのxml.domは、エラーや並べ替えの何かを修正するために試してみるには良い方法はありますか?あるいは、エラーを含んでいるかもしれないHTMLページからデータを抽出するための良い方法がありますか?

答えて

3

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

乾杯、

+0

美しいスープは、その素晴らしいではありません。 – Geo

+0

私はそれがあなたが何をしたいかによって決まると思います。 – Boldewyn

0

は、私はそのようなタスクのためにBeautifulSoupを使用するために使用されるが、今、私はBeautifulSoupが

他の選択肢は "を使用することで失敗し、多くの場合にうまく機能HTML5libhttp://code.google.com/p/html5lib/)にシフトしてきましたElementTreeを使用して美味しいスープのラッパーである「Element Soup」(http://effbot.org/zone/element-soup.htm

0

lxml無効なHTMLを解析する際にまともな仕事をします。そのドキュメントBeautiful Souphtml5libによると

は時々、入力に応じてパフォーマンスが向上。 lxmlを使用すると、使用するパーサーを選択し、統一されたAPIを介してアクセスできます。

0

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); 
    } 
関連する問題