Neste artigo, construiremos um programa que permite que você raspe ou obtenha dados de um site com um script Python. Este método de coleta de dados é chamado de web scraping.
A raspagem da Web tem tudo a ver com o uso programático do Python ou de qualquer outra linguagem de programação para baixar, limpar e usar os dados de uma página da web. A maioria dos sites não quer que você raspe seus dados e, para descobrir o que é legal e permitido para a raspagem, os sites têm uma página dedicada que mostra detalhes dos endpoints permitidos.
Anexe robots.txt ao final de qualquer link para saber mais sobre os endpoints permitidos. Por exemplo, vamos usar https://news.ycombinator.com/robots.txt .
O resultado deve ficar assim com este arquivo de texto abaixo:
A captura de tela indica quais endpoints podemos e não podemos extrair do site do YCombinator. Um atraso de rastreamento significa uma pausa ao coletar dados do site com programas, não sobrecarregando seus servidores e diminuindo a velocidade do site devido à captura constante.
Neste exercício, raspamos a página inicial do conteúdo de notícias, o que podemos fazer de acordo com o agente do usuário.
O raspador da web Python requer dois módulos necessários para raspar os dados:
Beautiful Soup é uma biblioteca Python para extrair dados de arquivos HTML. Ele modifica o arquivo usando um analisador, transforma os dados em um documento valioso e economiza horas de trabalho manual e repetitivo dos programadores.
A biblioteca HTTP request é para baixar arquivos HTML usando o link para o site com o
.get()
função.Agora, para o âmago da questão deste projeto. Crie um novo diretório e, nele, um arquivo que conterá todos os scripts do programa web scraper.
Copie e cole o seguinte código:
# app.py import requests response = requests.get( 'https://news.ycombinator.com/news' ) yc_web_page = response.text print(yc_web_page)
O código acima faz o seguinte:
requests
módulo .get()
função baixar os arquivos HTML do link do site fornecido .text
Se você executar este código com o comando python
app.py
e não fornecer nenhuma saída, significa que os dois módulos importados precisam ser instalados.Execute os seguintes comandos para instalar os módulos.
pip3 install requests pip install beautifulsoup4
O resultado do código-fonte deve ficar assim:
Em seguida, vamos atualizar o
app.py
arquivo com o restante do código usando beautiful soup: # main.py import requests from bs4 import BeautifulSoup # add this
response = requests.get( 'https://news.ycombinator.com/news' ) yc_web_page = response.text # add this
soup = BeautifulSoup(yc_web_page, 'html.parser' ) article_tag = soup.find(name= "a" , class_= 'titlelink' ) article_title = article_tag.get_text() article_link = article_tag.get( 'href' ) article_upvote = soup.find(name= "span" , class_= "score" ).get_text() result = { "title" : article_title, "link" : article_link, "point" : article_upvote } print(result)
Siga o trecho de código acima fazendo o seguinte::
yc_web_page
usando a função BeautifulSoup e html.parser
para obter os arquivos HTMLAntes de passar pelo restante do código, vamos abrir nosso navegador da Web com o link fornecido em
.get()
Em seguida, clique com o botão direito do mouse na página e clique em inspecionar para visualizar a guia de elementos da página de notícias do YCombinator .
Nossa página web deve ficar assim:
Com Beautiful Soup, podemos direcionar elementos específicos na página com seus nomes de classe:
find()
função com o nome do elemento, a tag a e o class_
com um sublinhado. Isso é feito para evitar uma substituição da classe no elemento na página da web article_tag
usando o .get_text()
função article_tag
usando o atributo href
com o .get()
função article_upvote
variável, onde o nome da tag, <span>
, e o nome da classe são usados para extrair os pontos para cada link de artigoCom todo o script escrito, nossa página deve extrair os dados da página inicial de notícias do YCombinator e ficar assim:
Este artigo ensinou como usar o raspador da web Python para extrair dados de uma página da web.
Além disso, as funcionalidades de usar um raspador da web são que ele economiza tempo e esforço na produção de grandes conjuntos de dados mais rapidamente do que manualmente.