Python xml.dom と不正な XML
-
18-09-2019 - |
質問
Python プログラムを使用して、さまざまな HTML ページからデータを抽出しようとしています。残念ながら、これらのページの一部にはユーザーが入力したデータが含まれており、時折「軽度の」エラー、つまりタグの不一致が発生します。
Python の xml.dom にエラーなどの修正を試みさせる良い方法はありますか?あるいは、エラーを含む可能性のある HTML ページからデータを抽出するより良い方法はありますか?
解決
あなたはクリーンアップする 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 のラッパーです
、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); }