lxml combina a velocidade dessas bibliotecas com a simplicidade da linguagem Python.
Compatível com todas as versões CPython 2,4-3,2
O que é novo nesta versão:.
- lxml.html.iterlinks agora retorna links dentro de tags de Meta refresh.
- collect_ids opção New XmlParser = False para desabilitar ID de hash criação da tabela. Isso pode acelerar substancialmente se a análise de documentos com muitas IDs diferentes que não são usados.
- O analisador utiliza tabelas de hash por documento para IDs XML. Isso reduz a carga do dict parser global e acelera a análise de documentos com muitas identificações diferentes.
- ElementTree.getelementpath (elemento) retorna uma expressão ElementPath estrutural para o elemento de dado, o que pode ser usado para pesquisas mais tarde.
- xmlfile () aceita um argumento novo perto = True para fechar arquivo (-like) objetos depois de escrever para eles. Antes, xmlfile () só fechou o arquivo se ele tivesse aberto-lo internamente.
- Permita que & quot; bytearray & quot; tipo para a entrada de texto ASCII.
O que é novo na versão 3.4.2:
- lxml.html.iterlinks agora retorna links dentro de meta atualizar tags.
- collect_ids opção New XmlParser = False para desabilitar ID de hash criação da tabela. Isso pode acelerar substancialmente se a análise de documentos com muitas IDs diferentes que não são usados.
- O analisador utiliza tabelas de hash por documento para IDs XML. Isso reduz a carga do dict parser global e acelera a análise de documentos com muitas identificações diferentes.
- ElementTree.getelementpath (elemento) retorna uma expressão ElementPath estrutural para o elemento de dado, o que pode ser usado para pesquisas mais tarde.
- xmlfile () aceita um argumento novo perto = True para fechar arquivo (-like) objetos depois de escrever para eles. Antes, xmlfile () só fechou o arquivo se ele tivesse aberto-lo internamente.
- Permita que & quot; bytearray & quot; tipo para a entrada de texto ASCII.
O que é novo na versão 3.3.2:
- As propriedades resolvedores e versão, assim como o métodos set_element_class_lookup () e makeelement (), foram perdidos objetos iterparse.
- Instâncias de XMLSchema, Schematron e RelaxNG não limpar sua error_log local, antes de executar uma validação.
- lxml.doctestcompare misturados & quot; espera & quot; e & quot; real & quot; em valores de atributos.
O que é novo na versão 3.3.1:
- Bugs corrigidos:
- documentos HTML analisados com parser.feed () não conseguiu encontrar elementos durante tag iteração.
- Construção em PyPy falhou devido à falta de apoio para PyUnicode_Compare () e PyByteArray _ * () em C-API do PyPy.
- Compilação em MSVC falhou devido à falta de & quot; stdint.h & quot; arquivo de cabeçalho padrão.
- iterparse () falhou ao analisar BOM prefixado arquivos.
O que é novo na versão 3.3.0:
- Bugs corrigidos:
- A heurística que distingue caminhos de arquivos de URLs foi apertada para produzir menos falsos negativos.
O que é novo na versão 3.2.3:
- Suporte fixo para Python 2.4 que foi perdido em 3.2 .2.
O que é novo na versão 3.2.1:
- Os métodos apply_templates () e process_children () de elementos de extensão XSLT ganharam duas novas opções boolean elements_only e remove_blank_text que quer descartar todas as seqüências de espaço em branco ou só de cordas a partir da lista de resultados.
O que é novo na versão 3.2.0:
- os espaços em branco pode mudar o comportamento da análise de cadeia funções em lxml.html.
- A seqüência de funções em lxml.html análise são mais robustos em face do conteúdo HTML incomum como conjuntos de quadros ou faltando tags do corpo.
- I / O erros ao tentar acessar arquivos com caminhos que contêm caracteres não-ASCII poderia levantar UnicodeDecodeError em vez de devidamente relatar a IOError.
- Analisando de cordas na memória deficientes o acesso à rede no analisador padrão e fez tentativas posteriores para analisar a partir de uma URL falhar.
O que é novo na versão 3.1.2:
- atributos que passa através da API namespace-desconhece a ponte sax (ou seja, o método handler.startElement ()) falhou com um TypeError.
- Erro de serialização fixa em saída XSLT ao converter a árvore de resultado para uma seqüência de caracteres Unicode.
O que é novo na versão 3.0.2:
- Corrigida a falha durante o encerramento intérprete mudando para Cython 0,17 0,3 para a construção.
O que é novo na versão 3.0:
- C14N permite especificar os prefixos inclusivos para ser promovido a top- nível durante a serialização exclusivo.
- O suporte inicial para a construção em PyPy (através cpyext).
- objetos DTD ganhou uma API que permite acesso de leitura às suas declarações.
- xpathgrep.py ganhou apoio para a linha por linha (por exemplo, a partir da saída grep) para analisar e em torno da saída com uma nova tag raiz.
- E-fábrica em lxml.builder aceita subtipos de tipos de dados conhecidos (como subtipos de cordas) quando a construção de elementos em torno deles.
- iteração Árvore e iterparse () com um argumento tag seletivo suporta passagem de um conjunto de tags. Nós da árvore serão devolvidos pelos iteradores se corresponde a nenhum dos tags.
O que é novo na versão 2.3.5:
- Bater ao mesclar nós de texto em element.remove ( ).
- Bater no analisador sax / target ao relatar doctype vazio.
O que é novo na versão 2.3.4:
- Bater na construção de uma nsmap (propriedade do elemento) com namespace URIs vazio.
- Bater devido à condição de corrida quando os erros (ou mensagens de usuários) ocorrem durante o processamento XSLT roscado.
- XSLT stylesheet compilação poderia ignorar erros de compilação.
O que é novo na versão 2.3.3:
- Características acrescentou:
- lxml.html.tostring () ganhou novas opções de serialização with_tail e doctype.
- Bugs corrigidos:
- Corrigido uma falha quando se utiliza iterparse () para análise de HTML e solicitando eventos de início.
- parsing fixos de mais seletores em cssselect. Espaços em branco antes de pseudo-elementos e pseudo-classes é significativo, pois é um combinator descendente. & Quot; E: pseudo & quot; deve analisar o mesmo que & quot; E *: pseudo & quot ;, não & quot; E:. pseudo & quot;
- lxml.html.diff deixou de suscitar uma excepção ao bater as tags 'img' sem atributo 'src'.
O que é novo na versão 2.3.2:
- Características acrescentou:
- lxml.objectify.deannotate () tem um novo cleanup_namespaces opção booleana para remover as declarações de namespace objetivar (e geralmente limpar as declarações de namespace) depois de remover as anotações de tipo.
- lxml.objectify ganhou a sua função própria subelemento () como uma cópia do etree.SubElement para evitar uma importação de outro modo redundante de lxml.etree no lado do usuário.
- Bugs corrigidos:
- Corrigido o & quot; descendente & quot; bug em cssselect uma segunda vez (depois de uma primeira correção no lxml 2.3.1). A mudança anterior resultou numa regressão de desempenho sério para a avaliação baseada XPath da expressão traduzida. Note-se que esta quebra o uso de algumas das expressões XPath gerados como XSLT localização caminhos que anteriormente trabalhavam em 2.3.1.
- parsing Fixo de alguns seletores em cssselect. Espaços em branco depois de combinadores & quot; & # x3e; & quot ;, & quot; + & quot; e & quot; ~ & quot; está agora corretamente ignorado. Anteriormente se foi analisado como um elemento de combinação descendente. Por exemplo, & quot; div & # x3e; .foo & quot; foi analisado o mesmo que & quot; div & # x3e; * .foo & quot; em vez de & quot; div & # x3e; .foo & quot;.
O que é novo na versão 2.3.1:
- Características acrescentou:
- Nova opção kill_tags em lxml.html.clean para remover tags específicas e seu conteúdo (ou seja, toda a sua sub-árvore).
- pi.get () e pi.attrib em instruções de processamento para analisar pseudo-atributos do conteúdo de texto de instruções de processamento.
- lxml.get_include () retorna uma lista de incluir caminhos que podem ser usados para compilar o código externo C contra lxml.etree. Este é especificamente necessário para lxml estaticamente ligado constrói quando o código precisa compilar contra as exatas mesmas versões de arquivo de cabeçalho como lxml si.
- Resolver.resolve_file () recebe um close_file opção adicional que configura se o (-like) objeto de arquivo será fechado depois de ler ou não. Por padrão, o arquivo será fechado, como não se espera que o usuário mantenha uma referência a ele.
- Bugs corrigidos:
- limpeza HTML não removeu 'dados:'. Ligações
- A integração parser html5lib agora usa a implementação de "oficial" em si html5lib, o que faz com que funcione com as versões mais recentes da biblioteca.
- Em lxml.sax, endElementNS () pode incorretamente rejeitar um nome de tag sem formatação quando o evento de início correspondente inferir o mesmo nome tag simples para estar no namespace padrão.
- Quando um objeto como arquivo aberto é passado para parse () ou iterparse (), o analisador não fecha após o uso. Isso reverte uma mudança na lxml 2.3 onde todos os arquivos seriam fechadas. É de responsabilidade do usuário para fechar corretamente o (-like) objeto de arquivo, também em casos de erro.
- erro de declaração na lxml.html.cleaner quando descartar elementos de nível superior.
- Em lxml.cssselect, utilize o xpath 'A // B "(abreviação de' A / nó descendente-or-self :: () / B ') em vez de" A / descendente :: B' para o css seletor descendente ('A B'). Isso faz com que alguns casos de borda para ser coerente com o comportamento selector em WebKit e Firefox, e torna mais expressões CSS caminhos de localização válidos (para uso em xsl: template match).
- Em lxml.html, não-selecionados & # X3C opção; & # x3e; Tag não aparecer nos valores do formulário recolhidos.
- Adicionar / remover & # X3C opção; & # x3e; valores de / para um campo de formulário de seleção múltipla seleciona-los corretamente e unselects-los.
- Outras alterações:
- estático constrói pode especificar o diretório de download com a opção --download-dir.
O que é novo na versão 2.3:
- Características acrescentou:
- Ao olhar para as crianças, lxml.objectify leva '{} tag' no sentido de um namespace vazio, ao contrário do namespace pai.
- Bugs corrigidos:
- Quando terminar de ler a partir de um objeto como arquivo, o analisador imediatamente chama seu método .close ().
- Quando terminar a análise, iterparse () imediatamente fecha o arquivo de entrada.
- Work-around para libxml2 bug que pode deixar o analisador HTML em um estado não funcional depois de analisar um documento quebrado severly (fixo no libxml2 2.7.8).
- Marque tag HTML no código de limpeza é nomeado corretamente marquise.
- Outras alterações:
- Algumas funções públicas no nível de Cython C-API têm tipos de retorno mais explícitas.
O que é novo na versão 2.3beta1:
- Bugs corrigidos:
- Bater em versões mais recentes libxml2 ao mover elementos entre os documentos que tinham atributos em nós XInclude substituídos.
- função XMLID () estava faltando os parâmetros do analisador e base_url opcionais.
- Busca por tags de curinga em iterparse () foi quebrado em PY3.
- lxml.html.open_in_browser () não funcionou no Python 3, devido à utilização de os.tempnam. Ela agora toma um parâmetro opcional 'codificação'.
Comentários não encontrado