Como rastrear links em uma web usando Python

Índice

Hoje vou te ensinar percorrer links em uma página com Python (Raspagem da web), isso pode ser muito útil para rastrear o conteúdo de um site automaticamente e não ter que fazer isso manualmente. No programa que trago, cada link é obtido lendo o html, você poderia modificar o programa para buscar um determinado conteúdo e mostrar apenas os links de seu interesse.

Você também pode fazer web scraping usando o arquivo robots.txt ou os sitemaps dos sites.

ObservaçãoO código mostrado funciona em Python 3.x, se você quiser executá-lo na versão 2.x terá que fazer pequenas modificações.

Aqui está o código:

 import queue import urllib.request import re de urllib.parse import urljoin def download (página): try: request = urllib.request.Request (page) html = urllib.request.urlopen (request) .read () print ("[ *] Download OK >> ", página) exceto: print ('[!] Erro ao fazer download', página) return Nenhum return html def crawlLinks (página): searchLinks = re.compile ('] + href = ["'] ( . *?) ["']', re.IGNORECASE) queue = queue.Queue () queue.put (page) visitado = [page] print (" Procurando links em ", página) while (queue.qsize () > 0): html = download (queue.get ()) if html == None: continue links = searchLinks.findall (str (html)) para link em links: link = urljoin (page, str (link)) if ( link não visitado): queue.put (link) visitado.append (link) if __name__ == "__main__": crawlLinks ("http://www.solvetic.com") 
A primeira coisa que fazemos é euimporte as bibliotecas necessárias, para expressões regulares (re), para usar a fila (fila), para fazer requisições e ler uma página (urllib.request) e para a construção de URLs absolutos de uma URL base e outra URL (urljoin).

Código dividido em 2 funções
baixarIsso nos ajuda a baixar o html de uma página. Não precisa de muita explicação, a única coisa que faz é um pedido à página desejada, lê o seu html, se tudo correr bem mostra a mensagem Download OK, e se não mostra que houve um erro (Aqui vamos poderia mostrar informações sobre o erro), no final retorna o html lido ou Nenhum.
links de trilhaÉ a função principal e será executada em cada link. Vamos explicar um pouco:

  • Criamos uma variável com uma expressão regular, que nos ajuda a encontrar os links no html.
  • Iniciamos uma variável do tipo tail com a página inicial, ela nos ajudará a salvar os links na "ordem" em que os descobrimos. Também iniciamos uma variável do tipo lista chamada visitada que usaremos para salvar os links conforme forem visitados, isso é feito para evitar um loop infinito, imagine que a página x se refere à página y, e esta por sua vez à página x, todos os enquanto vamos inserir esses links indefinidamente.
  • O núcleo da função é o loop while, que será executado enquanto a fila tiver links, então verificamos se o tamanho é maior que 0. Em cada passagem, removemos um link da fila e o enviamos para a função de download , que nos devolverá o html, então procuramos os links, e verificamos se já o visitamos, senão o adicionamos à fila e à lista.

ObservaçãoPuede parecer que la lista sobra, pero de la cola vamos a ir sacando y borrando los enlaces, por lo que la comprobación no sería correcta, a lo mejor el enlace le visitamos hace rato y ya no está en la cola, pero si estará en a lista.

A última parte do código fora das funções cuidará da execução do código. Na imagem a seguir você pode ver uma captura de tela do código em execução, com rastreamento solvético.

Se quiser, você pode se ajudar com uma biblioteca que existe para python chamada BeautifulSoup, vai parecer muito fácil de manusear, eu recomendo.

Caso você queira o código, aqui está um CEP:

TraverseLinks.zip 646 bytes 493 Downloads

Gostou e ajudou este tutorial?Você pode recompensar o autor pressionando este botão para dar a ele um ponto positivo

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave