Pitão

Análise de HTML usando Python

Análise de HTML usando Python
Analisar HTML é uma das tarefas mais comuns feitas hoje para coletar informações de sites e explorá-las para vários fins, como estabelecer o desempenho do preço de um produto ao longo do tempo, resenhas de um livro em um site e muito mais. Existem muitas bibliotecas como BeautifulSoup em Python que abstrai tantos pontos dolorosos na análise de HTML, mas vale a pena saber como essas bibliotecas realmente funcionam sob essa camada de abstração.

Nesta lição, é isso que pretendemos fazer. Vamos descobrir como os valores de diferentes tags HTML podem ser extraídos e também sobrescrever a funcionalidade padrão deste módulo para adicionar alguma lógica 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 definição de classe para o HTMLParser aula:

classe html.analisador.HTMLParser (*, convert_charrefs = True)

O convert_charrefs campo, se definido como True fará com que todas as referências de caracteres sejam convertidas em seus equivalentes Unicode. Apenas o script / estilo 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.

Subclassificação da classe HTMLParser

Nesta seção, iremos criar uma subclasse da classe HTMLParser e dar uma olhada em algumas das funções que estão sendo chamadas quando os dados HTML são passados ​​para a instância da classe. Vamos escrever um script simples que faça tudo isso:

de html.parser import HTMLParser
classe LinuxHTMLParser (HTMLParser):
def handle_starttag (self, tag, attrs):
print ("Tag de início encontrada:", tag)
def handle_endtag (self, tag):
print ("Tag final encontrada:", tag)
def handle_data (self, data):
imprimir ("Dados encontrados:", dados)
parser = LinuxHTMLParser ()
analisador.alimentação("
'

Módulo de análise de HTML Python


')

Aqui está o que recebemos de volta 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.parser import HTMLParser
de html.entidades importar nome2 ponto de código
classe LinuxHint_Parse (HTMLParser):
def handle_starttag (self, tag, attrs):
imprimir ("tag inicial:", tag)
para attr em attrs:
print ("attr:", attr)
def handle_endtag (self, tag):
imprimir ("Tag final:", tag)
def handle_data (self, data):
imprimir ("Dados:", dados)
def handle_comment (self, data):
imprimir ("Comentário:", dados)
def handle_entityref (self, name):
c = chr (name2codepoint [nome])
print ("Nomeado ent:", c)
def handle_charref (self, name):
se nome.começa com ('x'):
c = chr (int (nome [1:], 16))
senão:
c = chr (int (nome))
imprimir ("Num ent:", c)
def handle_decl (self, data):
imprimir ("Decl:", dados)
parser = LinuxHint_Parse ()

Com várias chamadas, vamos alimentar dados HTML separados para esta instância e ver qual saída essas chamadas geram. Começaremos com um simples DOCTYPE fragmento:

analisador.alimentação(''"http: // www.w3.org / TR / html4 / strict.dtd "> ')

Aqui está o que recebemos de volta com esta ligação:

String DOCTYPE

Vamos agora tentar uma tag de imagem e ver quais dados ela extrai:

analisador.alimentação('O logotipo Python')

Aqui está o que recebemos de volta com esta ligação:

Tag de imagem HTMLParser

A seguir, vamos tentar como a tag de script se comporta com funções Python:

analisador.alimentação('')
analisador.alimentação('')
analisador.feed ('# python color: green')

Aqui está o que recebemos de volta com esta ligação:

Tag de script em htmlparser

Por fim, também passamos comentários para a seção HTMLParser:

analisador.alimentação(''
'')

Aqui está o que recebemos de volta com esta ligação:

Analisando comentários

Conclusão

Nesta lição, vimos como podemos analisar HTML usando a própria classe HTMLParser do Python sem qualquer outra biblioteca. Podemos facilmente modificar o código para alterar a fonte dos dados HTML para um cliente HTTP.

Leia mais postagens baseadas em Python aqui.

O botão do meio do mouse não funciona no Windows 10
O botão do meio do mouse ajuda você a percorrer longas páginas da web e telas com muitos dados. Se isso parar, você vai acabar usando o teclado para r...
Como alterar os botões esquerdo e direito do mouse no PC com Windows 10
É normal que todos os dispositivos de mouse de computador sejam ergonomicamente projetados para usuários destros. Mas existem dispositivos de mouse di...
Emular cliques do mouse passando o mouse usando o mouse sem cliques no Windows 10
Usar um mouse ou teclado na postura errada de uso excessivo pode resultar em muitos problemas de saúde, incluindo tensão, síndrome do túnel do carpo e...