Pergunta

Eu estou tentando extrair alguns dados de várias páginas HTML usando um programa de python. Infelizmente, algumas destas páginas contêm dados inseridos pelo usuário que ocasionalmente tem "ligeiras" erros -. Nomeadamente tag descasamento

Existe uma boa maneira de ter chance xml.dom de python para corrigir erros ou algo do tipo? Como alternativa, há uma melhor maneira de extrair dados de páginas HTML que pode conter erros?

Foi útil?

Solução

Você pode usar HTML Tidy para limpar, ou Beautiful Soup para analisar. Pode ser que você tem que salvar o resultado em um arquivo temporário, mas ele deve funcionar.

Cheers,

Outras dicas

Eu costumava usar BeautifulSoup para tais tarefas, mas agora tenho deslocado para nofollow HTML5lib ( http://code.google.com/p/html5lib/ ) que funciona bem em muitos casos em que BeautifulSoup falha

outra alternativa é usar " Elemento Soup " ( http: //effbot.org/zone/element-soup.htm ), que é um wrapper para Beautiful Soup usando ElementTree

lxml faz um trabalho decente em análise inválido HTML.

De acordo com sua documentação bonito Soup e html5lib às vezes um melhor desempenho dependendo da entrada. Com lxml você pode escolher qual analisador para utilização, e acessá-los por meio de uma API unificada.

Se jython é aceitável para você, TagSoup é muito bom em analisar lixo -. Se for, eu achei as bibliotecas JDOM muito mais fácil de usar do que outras alternativas xml

Este é um trecho de uma demo mockup a ver com a captura de tela de planejador de viagem do 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);
    }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top