Raspagem na web: construir bots da web baseados em HTML com o beloguspoup

Ele fala sobre bobagem da web e métodos de uso de módulos de belo GreakeSoup e solicita para criar bots do site para obter dados da Web.

Conforme mencionado no Capítulo 3 anterior sobre “Como escrever, analisar e ler arquivos CSV com dados raspados”, discutiríamos como especificar dados da web para raspagem. É porque esse é um dos principais motivos pelos quais gostamos de aprender Python como profissionais de marketing digital .

Portanto, neste tutorial python para profissionais de marketing digital 4, apresentarei conceitos e métodos básicos. É com o uso de Beautifulsoup e Requests que você precisa saber para especificar dados da web e raspar. É melhor se você entender como ler HTML, CSS e javascript nesta parte. Mas está tudo bem se ainda não o fez, porque o objetivo é encontrar os dados localizados no momento. E também serve para aprender alguns métodos de coleta de dados específicos para fins de marketing digital.

Durante a lição do tutorial Python, tomarei Ring.com como exemplo para escrever códigos e obter todas as ofertas e preços mais recentes. Ao final do tutorial Python, você pode identificar onde estão os elementos de dados esperados em uma página e raspar tudo em minutos.

Índice: Crie um bot de site para extrair dados específicos de sites usando BeautifulSoup

Identifique a seção de dados em uma página de destino

Como você pode ver aqui, existem muitos pacotes e ofertas de produtos de anel que podem ser atualizados irregularmente. Se você era revendedor ou concorrente da Ring, com certeza gostaria de ajustar a estratégia de marketing e preços do produto, para que a taxa de conversão não seja impactada se as vendas forem críticas para o seu negócio.

Para encontrar a localização dos dados, precisamos usar uma ferramenta de desenvolvedor de navegador e inspecionar o código-fonte da web. Tomo o Chrome como exemplo, você pode selecionar um produto e clicar com o botão direito para selecionar inspecionar.

Nosso objetivo é coletar dados de títulos, subtítulos, preços normais, preços promocionais, descrições e URLs de produtos. Com base neste alvo de extração de dados, tentamos examinar o código e descobrir esta seção ou o que chamamos de divisão, que inclui todos os dados que pretendemos extrair:

<div class=”plp-product”.......</div>

Você está ciente de que o restante das informações do produto começa com a mesma divisão:

<div class=”plp-product”.......</div>

Para ver se isso está correto, podemos começar a usar os métodos: find() e find_all()

(Observação: não vou entrar em detalhes sobre como importar o Beautifulsoup, solicita módulos. Se quiser saber mais, confira os artigos anteriores:

Capítulo 2: Web Scraping com BeautifulSoup, Requests, Python

Web Scraping – Encontre e encontre todas as funções

Primeiro de tudo, vamos criar variáveis ​​chamadas ringweb , ringoffers e ringproduct

ringweb = requests.get('https://ring.com/collections/offers').text

ringoffers = BeautifulSoup(ringweb,'lxml')

O método find() é usado para localizar sua ação de raspagem e obter uma resposta dos dados deste local. Como o caminho é <div class=”plp-product”.......</div> para que possamos escrever uma linha de código

ringproduct = ringoffers.find('div', class_='plp-product')

Nesta linha de código, definimos uma variável, ringrproduct que representa os dados do caminho de destino em ringoffers . Apenas tenha em mente que no método Python, geralmente usamos vírgulas para dividir o código-fonte HTML e usamos aspas simples para cada código-fonte. Em relação à classe, precisamos usar class_=, porque class= representa a outra função em Python.

Se tentarmos imprimir isso e o comando B, você verá que essas linhas de código já podem capturar os dados da seção. Está funcionando.

Como Ring.com não tem apenas um conjunto de pacotes para vender na página de ofertas, precisamos usar o outro método find_all(). Precisamos apenas substituir find() por find_all(), você pode ver que todos os dados da seção do pacote são gerados.

Especifique os dados para analisar e extrair

Agora começamos a analisar os dados da seção de destino e os dados específicos que queremos extrair, conforme mencionamos anteriormente neste artigo.

Em primeiro lugar, é o título do produto

Podemos inspecionar e ver nas ferramentas do desenvolvedor, a página de ofertas do Ring h4 representa apenas o título do pacote de produtos, então podemos escrever diretamente uma linha de código:

headline = ringproduct.h4.text
print(headline)

Em Python, dividimos um caminho usando um ponto, exceto para um caminho dentro de um método. À medida que coletamos os dados da string, podemos usar o texto após h4.

Então, seu subtítulo e descrição

Podemos ver que há dois lugares que usam h6 (subtítulo e descrição). Tão diferente do título, precisamos usar o método find() e localizar dados h6 específicos

subheadline = ringproduct.find('h6', class_='sub-title size-xs').text
print(subheadline)

description = ringproduct.find('h6',class_='product-description font__exlight').text
print(description)

Você descobriria que nem todos os pacotes de produtos têm subtítulos. Em Python, precisamos passar dados ausentes para evitar erros na execução do arquivo de script. Falarei sobre isso em um momento.

Então, é o preço normal e o preço promocional

promote_price = ringproduct.find('span',class_='regular-price').text
print(promote_price)

regular_price = ringproduct.find('span',class_='compare-price').text
print(regular_price)

Por último, mas não menos importante, é o URL de destino do produto

Linhas de código:

product_url = ringproduct.a['href']
product_link = f'https://ring.com{product_url}'
print(product_link)

Basicamente, há apenas um URL exclusivo exibido no código-fonte de cada pacote de produtos. Por exemplo, o caminho de destino do kit inicial do produto é coleções/ofertas/produtos/kit inicial. Portanto, poderíamos ignorar qual valor pretendemos extrair e aproveitar diretamente [], para extrair o valor href em uma seção: product_url = ringproduct.a['href']

No entanto, se inserirmos esses caminhos de dados em um arquivo, eles não poderão ser abertos e acessados ​​na página. Portanto, para exibir o URL completo, podemos criar uma variável product_link e aproveitar o recurso de formato usando f '' e inserir product_url em { }.

product_link = f'https://ring.com{product_url}'

Se tentarmos imprimir isso, poderemos obter um resultado que prova que está funcionando.

Crie um loop para extrair todos os dados especificados pela seção

Essas linhas de código estão funcionando para que possamos implementá-las para extrair todos os dados em massa. Para isso, precisamos usar os métodos for…in e find_all:

for ringproduct in ringoffers.find_all('div', class_='plp-product'):

Como esse código está no nível pai, precisamos adicionar dois pontos no final desta linha de código e recuar as linhas filhas.

Se tentarmos imprimir, poderemos ver o resultado listado abaixo, que inclui todas as informações do pacote de produtos.

Passe dados ausentes em algumas seções

Você deve estar ciente de que nem todos os pacotes de produtos têm subtítulo e preço promocional, portanto, se você tentar executar linhas de código de subtítulo e preço promocional, se encontrar esta resposta do Python: object has no attribute 'text' , e isso interromperia o processo de raspagem.

Este é o reflexo do mundo da codificação porque nem todas as informações estão ordenadas e estruturadas. Portanto, precisamos usar try/except para passar isso ao encontrar.

Subtítulo:

try:
subheadline = ringproduct.find('h6', class_='sub-title size-xs').text
except Exception as e:
subheadline = None

Preço de promoção:

try:
regular_price = ringproduct.find('span',class_='compare-price').text

except Exception as e:
regular_price = None

Para o valor da variável exceto exceção como e, você pode defini-lo como achar fácil de entender, como nenhum, 0, 'NA', etc.

Eu não defini nenhum, então você pode ver o resultado da resposta

Salve os dados em um arquivo CSV

Agora o script python está pronto e é hora de salvar os dados extraídos em um local, que pode ser um arquivo local ou um servidor online.

Entrarei em detalhes sobre o arquivo CSV porque falei sobre esta lição anteriormente. Se você estiver interessado, confira o outro artigo

Capítulo 3: Utilize o módulo CSV para escrever, analisar e ler arquivos CSV para gerenciar dados extraídos

Após a conclusão dos códigos, um arquivo CSV como o abaixo surgiria e armazenaria todos os dados especificados que pretendemos extrair.

Script Python completo do bot do site

Se você gostaria de ter a versão completa do Python Script do Website Bot, por favor subscreva a nossa newsletter adicionando a mensagem Capítulo 4 . Enviaremos o script imediatamente para sua caixa de correio.

Contate-nos

Tão fácil, certo? Espero que você goste de ler o Capítulo 4: Crie um bot de site para extrair dados específicos de sites usando o BeautifulSoup. Se você fez isso, por favor, apoie-nos fazendo uma das coisas listadas abaixo, porque isso sempre ajuda nosso canal.

  • Apoie e doe para nosso canal através do PayPal ( paypal.me/Easy2digital )
  • Inscreva-se no meu canal e ative o sininho de notificação do canal Easy2Digital no Youtube .
  • Siga e curta minha página Página Easy2Digital no Facebook
  • Compartilhe o artigo em sua rede social com a hashtag #easy2digital
  • Compre produtos com código de desconto Easy2Digital 10% OFF ( Easy2DigitalNewBuyers2021)
  • Você se inscreve em nosso boletim informativo semanal para receber os artigos, vídeos e códigos de desconto mais recentes da Easy2Digital
  • Assine nossa assinatura mensal através do Patreon para aproveitar benefícios exclusivos ( www.patreon.com/louisludigital )

Além de extrair dados HTML e XML da web, se você estiver interessado em aprender a buscar alguns dados da plataforma que só podem ser acessados ​​​​via API, confira este artigo, e começaríamos com o canal do Youtube.

Capítulo 5 – Construa um bot do YouTube para extrair vídeos populares usando APIs do YouTube e Easy2Digital

Perguntas frequentes:

Q1: Qual é o tamanho do produto beloguspoup?

A: O tamanho do produto beloguspoup é de 20 cm de comprimento, 10 cm de largura e 5 cm de altura.

Q2: Qual é o material do produto beloguspoup?

A: O produto beloguspoup é feito de plástico resistente e durável.

Q3: O produto beloguspoup vem com garantia?

A: Sim, o produto beloguspoup vem com uma garantia de 1 ano.

Q4: Como faço para limpar o produto beloguspoup?

A: Para limpar o produto beloguspoup, basta usar água morna e sabão neutro.

Q5: Posso usar o produto beloguspoup em ambientes externos?

A: Sim, o produto beloguspoup é adequado para uso em ambientes internos e externos.

Q6: O produto beloguspoup é resistente à água?

A: Sim, o produto beloguspoup é resistente à água e pode ser usado no banheiro.

Q7: O produto beloguspoup vem com pilhas incluídas?

A: Não, o produto beloguspoup não vem com pilhas incluídas. É necessário adquirir pilhas separadamente.

Q8: O produto beloguspoup possui opções de cores?

A: Sim, o produto beloguspoup está disponível em várias opções de cores, incluindo vermelho, azul e verde.

Q9: Qual é a potência do produto beloguspoup?

A: O produto beloguspoup possui uma potência de 1000 watts.

Q10: O produto beloguspoup é adequado para todas as idades?

A: Sim, o produto beloguspoup é adequado para todas as idades, desde crianças até adultos.