Nesta lição, é isso que pretendemos fazer. Descobriremos como os valores de diferentes tags HTML podem ser extraídos e também substituir a funcionalidade padrão deste módulo para adicionar alguma lógica de nossa própria. Faremos isso usando o Htmlparser classe em python em html.analisador módulo. Vamos ver o código em ação.
Olhando para a classe htmlparser
Para analisar o texto html em python, podemos usar Htmlparser classe em html.analisador módulo. Vejamos a dfinição da classe para o Htmlparser aula:
Classe html.analisador.Htmlparser (*, convert_charrefs = true)
O convert_charrefs O campo, se definido como True, fará todas as referências de personagem convertidas aos seus equivalentes unicode. Apenas o script/estilo Os elementos não são convertidos. Agora, tentaremos entender cada função para esta classe também para entender melhor o que cada função faz.
def handle_startendTag (self, tag, attrs):
auto.handle_startTag (tag, attrs)
auto.handle_endtag (tag)
def handle_startTag (self, tag, attrs):
passar
def Handle_endTag (self, tag):
passar
def handle_charref (self, nome):
passar
def handle_entityref (self, nome):
passar
def handle_data (self, dados):
passar
def handle_comment (self, dados):
passar
def handle_pi (self, dados):
passar
def handle_decl (self, decl):
passar
Subclassificando a classe HTMLPARSER
Nesta seção, subclasseremos a classe HTMLPARSER e daremos uma olhada em algumas das funções que estão sendo chamadas quando os dados HTML forem passados para a instância da classe. Vamos escrever um script simples que faça tudo isso:
de html.Resumo Importar HtmlParser
Classe LinuxhtmlParser (htmlParser):
def handle_startTag (self, tag, attrs):
print ("Iniciar a tag encontrada:", tag)
def Handle_endTag (self, tag):
print ("Tag final encontrado:", tag)
def handle_data (self, dados):
print ("Dados encontrados:", dados)
Parser = LinuxhtmlParser ()
analisador.alimentar("
'Módulo de análise HTML Python
')
Aqui está o que recebemos com este comando:
Subclasse python htmlparser
Funções HTMLPARSER
Nesta seção, trabalharemos com várias funções da classe htmlparser e examinaremos a funcionalidade de cada uma delas:
de html.Resumo Importar HtmlParser
de html.entidades importa name2CodePoint
classe Linuxhint_parse (htmlparser):
def handle_startTag (self, tag, attrs):
print ("Start Tag:", Tag)
para attr em attrs:
print ("att:", att)
def Handle_endTag (self, tag):
print ("tag final:", tag)
def handle_data (self, dados):
print ("dados:", dados)
def handle_comment (self, dados):
print ("Comentário:", dados)
def handle_entityref (self, nome):
C = Chr (name2CodePoint [Nome])
print ("chamado ent:", c)
def handle_charref (self, nome):
se nome.StartSwith ('x'):
C = Chr (int (nome [1:], 16)))
outro:
C = Chr (int (nome))
print ("num ent:", c)
def handle_decl (self, dados):
Print ("Decl:", Data)
Parser = Linuxhint_parse ()
Com várias chamadas, vamos alimentar dados HTML separados para esta instância e ver quais saídas essas chamadas geram. Vamos começar com um simples Doctype corda:
analisador.alimentar('Aqui está o que recebemos com esta chamada:
String doctype
Vamos agora experimentar uma tag de imagem e ver quais dados ela extrai:
analisador.alimentar('')Aqui está o que recebemos com esta chamada:
Tag de imagem htmlparser
Em seguida, vamos tentar como a tag de script se comporta com as funções Python:
analisador.alimentar(''
'alerta("Linuxhint Python"); ')
analisador.feed ('#python cor: verde')
analisador.feed ('#python cor: verde')Aqui está o que recebemos com esta chamada:
Tag de script em htmlparser
Finalmente, passamos comentários para a seção HTMLParser:
analisador.alimentar(''
'Conteúdo específico de ou seja')Aqui está o que recebemos com esta chamada:
Analisando comentários
Conclusão
Nesta lição, analisamos como podemos analisar o HTML usando a classe HTMLPARSER PRYMLPERS sem qualquer outra biblioteca. Podemos modificar facilmente o código para alterar a fonte dos dados HTML para um cliente HTTP.
Leia mais postagens baseadas em Python aqui.