문제

Python 프로그램을 사용하여 다양한 HTML 페이지에서 일부 데이터를 추출하려고합니다. 불행히도,이 페이지들 중 일부에는 사용자가 입력 한 데이터가 포함되어 있으며 때로는 "약간의"오류, 즉 태그 불일치가 있습니다.

Python의 XML.DOM이 오류 나 무언가를 수정하려고 시도하는 좋은 방법이 있습니까? 또는 오류가 포함될 수있는 HTML 페이지에서 데이터를 추출하는 더 좋은 방법이 있습니까?

도움이 되었습니까?

해결책

당신은 사용할 수 있습니다 HTML 깔끔한 청소를 위해 또는 아름다운 수프 구문 분석. 결과를 온도 파일에 저장해야 할 수도 있지만 작동해야합니다.

건배,

다른 팁

나는 그런 작업에 BeautifulSoup을 사용했지만 이제는 html5lib (http://code.google.com/p/html5lib/) BeautifulSoup이 실패하는 많은 경우에 잘 작동합니다.

다른 대안은 사용하는 것입니다. "요소 수프" (http://effbot.org/zone/element-soup.htm) 요소 트리를 사용하여 아름다운 수프를위한 포장지입니다.

LXML 유효하지 않은 HTML을 파싱하는 데 괜찮은 일을합니다.

그들의 문서에 따르면 아름다운 수프 그리고 html5lib 때로는 입력에 따라 더 잘 수행됩니다. LXML을 사용하면 사용할 파서를 선택하고 통합 API를 통해 액세스 할 수 있습니다.

Jython이 귀하에게 허용되면 Tagsoup은 쓰레기를 파싱하는 데 매우 능숙합니다. 그렇다면 JDOM 라이브러리가 다른 XML 대안보다 훨씬 쉽게 사용하기 쉽다는 것을 알았습니다.

이것은 TFL의 Journey Planner의 스크린 스크래핑과 관련된 데모 모형의 스 니펫입니다.

 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