"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como o Beautiful Soup é usado para extrair dados da Web pública

Como o Beautiful Soup é usado para extrair dados da Web pública

Publicado em 01/08/2024
Navegar:472

How Beautiful Soup is used to extract data out of the Public Web

Beautiful Soup é uma biblioteca Python usada para extrair dados de páginas da web. Ele cria uma árvore de análise para analisar documentos HTML e XML, facilitando a extração das informações desejadas.

Beautiful Soup fornece várias funcionalidades importantes para web scraping:

  1. Navegando na árvore de análise: Você pode navegar facilmente na árvore de análise e pesquisar elementos, tags e atributos.
  2. Modificando a árvore de análise: Permite modificar a árvore de análise, incluindo adicionar, remover e atualizar tags e atributos.
  3. Formatação de saída: Você pode converter a árvore de análise novamente em uma string, facilitando o salvamento do conteúdo modificado.

Para usar o Beautiful Soup, você precisa instalar a biblioteca junto com um analisador como lxml ou html.parser. Você pode instalá-los usando pip

#Install Beautiful Soup using pip.
pip install beautifulsoup4 lxml

Lidando com paginação

Ao lidar com sites que exibem conteúdo em várias páginas, lidar com a paginação é essencial para extrair todos os dados.

  1. Identifique a estrutura de paginação: Inspecione o site para entender como a paginação está estruturada (por exemplo, botão de próxima página ou links numerados).
  2. Iterar nas páginas: Use um loop para iterar em cada página e extrair os dados.
  3. Atualize o URL ou os parâmetros: Modifique o URL ou os parâmetros para buscar o conteúdo da próxima página.
import requests
from bs4 import BeautifulSoup

base_url = 'https://example-blog.com/page/'
page_number = 1
all_titles = []

while True:
    # Construct the URL for the current page
    url = f'{base_url}{page_number}'
    response = requests.get(url)
    soup = BeautifulSoup(response.content, 'html.parser')

    # Find all article titles on the current page
    titles = soup.find_all('h2', class_='article-title')
    if not titles:
        break  # Exit the loop if no titles are found (end of pagination)

    # Extract and store the titles
    for title in titles:
        all_titles.append(title.get_text())

    # Move to the next page
    page_number  = 1

# Print all collected titles
for title in all_titles:
    print(title)

Extraindo dados aninhados

Às vezes, os dados que você precisa extrair estão aninhados em várias camadas de tags. Veja como lidar com a extração de dados aninhados.

  1. Navegue até tags pai: Encontre as tags pai que contêm os dados aninhados.
  2. Extrair tags aninhadas: Dentro de cada tag pai, encontre e extraia as tags aninhadas.
  3. Iterar por meio de tags aninhadas: Iterar por meio de tags aninhadas para extrair as informações necessárias.
import requests
from bs4 import BeautifulSoup

url = 'https://example-blog.com/post/123'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')

# Find the comments section
comments_section = soup.find('div', class_='comments')

# Extract individual comments
comments = comments_section.find_all('div', class_='comment')

for comment in comments:
    # Extract author and content from each comment
    author = comment.find('span', class_='author').get_text()
    content = comment.find('p', class_='content').get_text()
    print(f'Author: {author}\nContent: {content}\n')

Tratamento de solicitações AJAX

Muitos sites modernos usam AJAX para carregar dados dinamicamente. Lidar com AJAX requer técnicas diferentes, como monitorar solicitações de rede usando ferramentas de desenvolvedor de navegador e replicar essas solicitações em seu scraper.

import requests
from bs4 import BeautifulSoup

# URL to the API endpoint providing the AJAX data
ajax_url = 'https://example.com/api/data?page=1'
response = requests.get(ajax_url)
data = response.json()

# Extract and print data from the JSON response
for item in data['results']:
    print(item['field1'], item['field2'])

Riscos de raspagem na Web

Web scraping requer consideração cuidadosa dos riscos legais, técnicos e éticos. Ao implementar proteções apropriadas, você pode mitigar esses riscos e realizar web scraping de maneira responsável e eficaz.

  • Violações dos Termos de Serviço: muitos sites proíbem explicitamente a raspagem em seus Termos de Serviço (ToS). A violação destes termos pode levar a ações legais.
  • Questões de propriedade intelectual: a extração de conteúdo sem permissão pode infringir os direitos de propriedade intelectual, levando a disputas legais.
  • Bloqueio de IP: os sites podem detectar e bloquear endereços IP que apresentam comportamento de scraping.
  • Banimentos de contas: Se a raspagem for realizada em sites que exigem autenticação do usuário, a conta usada para raspagem poderá ser banida.

Beautiful Soup é uma biblioteca poderosa que simplifica o processo de web scraping, fornecendo uma interface fácil de usar para navegar e pesquisar documentos HTML e XML. Ele pode realizar várias tarefas de análise, tornando-se uma ferramenta essencial para quem deseja extrair dados da web.

Declaração de lançamento Este artigo está reproduzido em: https://dev.to/marcosconci/how-beautiful-soup-is-used-to-extract-data-out-of-the-public-web-51gg?1 Se houver alguma violação , entre em contato com study_golang @163.comdelete
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3