Raspe um site com este lindo tutorial de sopa de python

Beautiful Soup é uma biblioteca Python de código aberto. Ele usa analisadores de navegação para raspar o conteúdo de arquivos XML e HTML. Você precisa de dados para vários fins analíticos. No entanto, se você é novo em Python e web scraping, vale a pena experimentar a biblioteca Beautiful Soup do Python para um projeto de web scraping.

Com a biblioteca Beautiful Soup de código-fonte aberto do Python, você pode obter dados copiando qualquer parte ou elemento de uma página da Web com controle máximo sobre o processo. Neste artigo, veremos como você pode usar o Beautiful Soup para raspar um site.

Como instalar a bela sopa e começar a utilizá-la

Antes de prosseguirmos, neste artigo do tutorial da Beautiful Soup, usaremos Python 3 e beautifulsoup4 , a versão mais recente da Beautiful Soup. Certifique-se de criar um ambiente virtual Python para isolar seu projeto e seus pacotes daqueles em sua máquina local.

Para começar, você deve instalar a biblioteca Beautiful Soup em seu ambiente virtual. Beautiful Soup está disponível como um pacote PyPi para todos os sistemas operacionais, portanto, você pode instalá-lo com o comando pip install beautifulsoup4 por meio do terminal.

No entanto, se você estiver no Debian ou Linux, o comando acima ainda funciona, mas você pode instalá-lo com o gerenciador de pacotes executando apt-get install python3-bs4 .

Beautiful Soup não raspa URLs diretamente. Ele só funciona com arquivos HTML ou XML prontos. Isso significa que você não pode passar um URL direto para ele. Para resolver esse problema, você precisa obter a URL do site de destino com a biblioteca de solicitações do Python antes de alimentá-la com a Beautiful Soup.

Para disponibilizar essa biblioteca para o seu raspador, execute o comando pip install requests por meio do terminal.

Para usar a biblioteca do analisador XML, execute pip install lxml para instalá-la.

Inspecione a página da web que você deseja raspar

Antes de limpar qualquer site com o qual você não está familiarizado, uma prática recomendada é inspecionar seus elementos. Você pode fazer isso alternando seu navegador para o modo de desenvolvedor. É muito fácil usar o Chrome DevTools se você estiver usando o Google Chrome.

No entanto, é necessário inspecionar uma página da web para saber mais sobre suas tags, atributos, classes e ids HTML. Isso expõe os principais elementos de uma página da web e seus tipos de conteúdo.

Também ajuda a desenvolver as melhores estratégias que você pode usar para obter os dados exatos que deseja de um site e como obtê-los.

Como raspar os dados de um site com uma sopa bonita

Agora que você tem tudo pronto e pronto, abra um editor de código de sua preferência e crie um novo arquivo Python, dando a ele um nome escolhido. No entanto, você também pode usar IDEs baseados na web, como o Jupyter Notebook, se não estiver familiarizado com a execução do Python por meio da linha de comando.

Em seguida, importe as bibliotecas necessárias:

from bs4 import BeautifulSoup import requests

Primeiro, vamos ver como funciona a biblioteca de solicitações:

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com') print(website)

Quando você executa o código acima, ele retorna um status 200, indicando que sua solicitação foi bem-sucedida. Caso contrário, você obtém um status 400 ou alguns outros status de erro que indicam uma falha na solicitação GET.

Lembre-se de sempre substituir o URL do site entre parênteses pelo seu URL de destino.

Depois de obter o site com a solicitação get , você o passa para a Beautiful Soup, que agora pode ler o conteúdo como arquivos HTML ou XML usando seu analisador XML ou HTML integrado, dependendo do formato escolhido.

Dê uma olhada neste próximo snippet de código para ver como fazer isso com o analisador HTML:

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com') soup = BeautifulSoup(website.content, 'html.parser') print(soup)

O código acima retorna todo o DOM de uma página da web com seu conteúdo.

Você também pode obter uma versão mais alinhada do DOM usando o método prettify . Você pode tentar isso para ver o resultado:

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') print(soup.prettify())

Você também pode obter o conteúdo puro de uma página da web sem carregar seu elemento com o método .text :

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') print(soup.text)

Como raspar o conteúdo de uma página da web pelo nome da tag

Você também pode raspar o conteúdo em uma tag específica com Beautiful Soup. Para fazer isso, você precisa incluir o nome da tag de destino em sua solicitação de raspador de sopa bonita.

Por exemplo, vamos ver como você pode obter o conteúdo nas tags h2 de uma página da web.

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') print(soup.h2)

No trecho de código acima, soup.h2 retorna o primeiro elemento h2 da página da web e ignora o resto. Para carregar todos os elementos h2 , você pode usar a função integrada find_all e o loop for do Python:

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') h2tags = soup.find_all('h2') for soups in h2tags: print(soups)

Esse bloco de código retorna todos os elementos h2 e seu conteúdo. No entanto, você pode obter o conteúdo sem carregar a tag usando o método .string :

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') h2tags = soup.find_all('h2') for soups in h2tags: print(soups.string)

Você pode usar este método para qualquer tag HTML. Tudo o que você precisa fazer é substituir a tag h2 pela que você gosta.

No entanto, você também pode raspar mais tags passando uma lista de tags para o método find_all . Por exemplo, o bloco de código abaixo remove o conteúdo das tags a , h2 e title :

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') tags = soup.find_all(['a', 'h2', 'title']) for soups in tags: print(soups.string)

Como raspar uma página da web usando o ID e o nome da classe

Depois de inspecionar um site com o DevTools, ele permite que você saiba mais sobre os atributos de id e classe que mantêm cada elemento em seu DOM. Assim que tiver essa informação, você pode raspar a página da web usando este método. É útil quando o conteúdo de um componente de destino está em loop do banco de dados.

Você pode usar o método find para os scrapers de id e classe. Ao contrário do método find_all que retorna um objeto iterável, o método find funciona em um único destino não iterável, que é o id neste caso. Portanto, você não precisa usar o loop for com ele.

Vejamos um exemplo de como você pode raspar o conteúdo de uma página abaixo usando o id:

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') id = soup.find(id = 'enter the target id here') print(id.text)

Para fazer isso para um nome de classe, substitua o id por class . No entanto, escrever classes resulta diretamente em confusão de sintaxe, visto que o Python a vê como uma palavra-chave. Para contornar esse erro, você precisa escrever um sublinhado na frente da classe como este: class_ .

Em essência, a linha que contém o id se torna:

my_classes = soup.find(class_ = 'enter the target class name here') print(my_classes.text)

No entanto, você também pode raspar uma página da web chamando um nome de tag específico com seu ID ou classe correspondente:

data = soup.find_all('div', class_ = 'enter the target class name here') print(data)

Como fazer um raspador reutilizável com uma bela sopa

Você pode criar uma classe e colocar todo o código anterior junto em uma função nessa classe para fazer um raspador reutilizável que obtém o conteúdo de algumas tags e seus ids. Podemos fazer isso criando uma função que aceita cinco argumentos: um URL, dois nomes de tag e seus IDs ou classes correspondentes.

Suponha que você queira raspar o preço das camisas de um site de comércio eletrônico. O exemplo de classe de raspador abaixo extrai as tags de preço e camisa com seus IDs ou classes correspondentes e, em seguida, retorna como um quadro de dados Pandas com 'Preço' e Shirt_name como os nomes das colunas.

Certifique-se de instalar o pandas através do terminal, caso ainda não tenha feito isso.

import pandas as pd class scrapeit: try: def scrape(website=None, tag1=None, id1=None, tag2=None, id2=None): if not (website and tag1 and id1 and tag2 and id2)==None: try: page = requests.get(website) soup = BeautifulSoup(page.content, 'html.parser') infotag1 = soup.find_all(tag1, id1) infotag2 = soup.find_all(tag2, id2) priced = [prices.text for prices in infotag1] shirt = [shirts.text for shirts in infotag2] data = { 'Price':priced, 'Shirt_name':shirt} info = pd.DataFrame(data, columns=['Price', 'Shirt_name']) print(info) except: print('Not successful') else: print('Oops! Please enter a website, two tags and thier corresponding ids') except: print('Not successful!')

O raspador que você acabou de fazer é um módulo reutilizável e você pode importá-lo e usá-lo em outro arquivo Python. Para chamar a função scrape de sua classe, você usa scrapeit.scrape ('URL do site', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id') . Se você não fornecer o URL e outros parâmetros, a instrução else solicitará que você o faça.

Para usar esse scaper em outro arquivo Python, você pode importá-lo assim:

from scraper_module import scrapeit scrapeit.scrape('URL', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id')

Nota: scraper_module é o nome do arquivo Python que contém a classe scraper.

Você também pode verificar a documentação da Beautiful Soup se quiser se aprofundar em como fazer o melhor uso dela.

A bela sopa é uma valiosa ferramenta de raspagem de teia

Beautiful Soup é um poderoso raspador de tela Python que oferece controle sobre como os dados chegam durante a coleta. É uma ferramenta de negócios valiosa, pois pode fornecer acesso aos dados da web do concorrente, como preços, tendências de mercado e muito mais.

Embora tenhamos feito um raspador de tag neste artigo, você ainda pode brincar com esta poderosa biblioteca Python para fazer ferramentas de raspagem mais úteis.


Como usar Python como uma calculadora de linha de comando

Como usar Python como uma calculadora de linha de comando

Embora você possa usar uma calculadora gráfica em seu computador, o interpretador da linguagem de programação Python pode funcionar como uma calculadora de mesa. É uma piada de corrida tão popular na comunidade Python que foi mencionada no tutorial oficial. Veja como você pode usar Python como calculadora.

Os 8 melhores blogs Java para programadores

Os 8 melhores blogs Java para programadores

Como programador, você deve enfrentar desafios para sobreviver e construir algumas maravilhas no campo de desenvolvimento ou programação. Portanto, se você está procurando aprender uma linguagem de programação avançada para aprimorar suas habilidades profissionais, Java é um dos melhores candidatos.

7 comandos vitais para começar a usar Python para iniciantes

7 comandos vitais para começar a usar Python para iniciantes

Aprender uma nova linguagem de programação como Python torna-se fácil se você tiver um roteiro abrangente detalhando quais conceitos aprender como um iniciante e como progredir ainda mais para alcançar o próximo marco. Mesmo os programadores intermediários devem freqüentemente revisar seus fundamentos para construir uma base sólida para si mesmos.

Princípios de Web Design Responsivo

Princípios de Web Design Responsivo

Hoje em dia, é prática comum construir um site ou aplicativo que ajusta sua interface de usuário dependendo do navegador ou do dispositivo. Existem duas abordagens para atingir esse objetivo. O primeiro envolve a criação de diferentes versões de seu site ou aplicativo para diferentes dispositivos. Mas é ineficiente e pode levar a erros imprevisíveis.

Como contar o número de dígitos em um número usando C ++, Python e JavaScript

Como contar o número de dígitos em um número usando C ++, Python e JavaScript

Trabalhar com números é parte integrante da programação. Cada linguagem de programação fornece suporte para manipular números de muitas maneiras diferentes. Neste artigo, você aprenderá como encontrar o número total de dígitos em um inteiro usando abordagens iterativas, baseadas em log e baseadas em string.

As 9 melhores alternativas do Docker para gerenciamento de contêineres

As 9 melhores alternativas do Docker para gerenciamento de contêineres

Os contêineres são altamente benéficos para o desenvolvimento, implantação e gerenciamento de software em um ambiente virtual. O Docker é útil no processo de conteinerização, mas não é a única plataforma disponível. Se você estiver procurando por alternativas ao Docker, não procure mais. Esta lista mostra algumas alternativas do Docker ricas em recursos e eficientes para usar em seu próximo projeto.

SQL vs. NoSQL: Qual é o melhor banco de dados para seu próximo projeto?

SQL vs. NoSQL: Qual é o melhor banco de dados para seu próximo projeto?

SQL vs. NoSQL: Qual é o melhor banco de dados para seu próximo projeto?

Como incorporar tweets em suas postagens do WordPress

Como incorporar tweets em suas postagens do WordPress

Incorporar serviços de terceiros em suas postagens do WordPress é uma maneira empolgante de cativar o interesse de um visitante. O conteúdo incorporado também fornece dicas visuais que tornam a digitalização mais fácil. O WordPress facilitou a adição desse tipo de conteúdo.

Como excluir a pasta de módulos de nó com npkill

Como excluir a pasta de módulos de nó com npkill

Node.js é um ambiente de tempo de execução JavaScript que permite executar JavaScript fora dos navegadores da web, tornando-o uma escolha popular para o desenvolvimento de todos os tipos de aplicativos. Parte de sua popularidade se deve à grande quantidade de pacotes NPM disponíveis para facilitar a experiência do desenvolvedor.

Como escrever e compilar seu primeiro código de Solidity

Como escrever e compilar seu primeiro código de Solidity

Solidity é a linguagem de programação usada por contratos inteligentes na blockchain Ethereum. É uma linguagem de programação orientada a objetos com tipagem estática.

Os 5 principais emblemas que irão turbinar seu repositório GitHub

Os 5 principais emblemas que irão turbinar seu repositório GitHub

Os emblemas do GitHub podem aumentar a legibilidade de um repositório, fornecendo aos usuários uma maneira rápida de capturar as métricas do repositório. Badges podem ser embutidos em seu README.md para esclarecer a importância e necessidade de seu projeto para outros desenvolvedores. Como resultado, os leitores têm uma ideia muito rápida do repositório, verificando os emblemas anexados.

O que é o Dia Internacional do Programador? 3 maneiras de comemorar este ano

O que é o Dia Internacional do Programador? 3 maneiras de comemorar este ano

Os dias comemorativos internacionais são uma boa forma de dar reconhecimento a questões sociais, dias históricos e respetivas carreiras. O Dia Internacional do Programador celebra o papel que os programadores desempenham para melhorar a vida cotidiana. O mundo civilizado em que vivemos é produto do trabalho árduo dos programadores.

Como funciona o método Python String format ()? 10 exemplos

Como funciona o método Python String format ()? 10 exemplos

Quer seja uma consulta de banco de dados ou resultados de operações matemáticas, o método de formato de string Python oferece uma maneira mais dinâmica e atraente de apresentar os resultados a um usuário.

Visual Studio 2022 vs. 2019: você deve atualizar agora? Explicado

Visual Studio 2022 vs. 2019: você deve atualizar agora? Explicado

No início deste ano, a Microsoft lançou a versão prévia do Visual Studio 2022 no mundo selvagem da programação. Esta é uma boa notícia! É um IDE extremamente popular, mas precisa de um ajuste ou talvez até mesmo uma revisão, dado o ritmo de mudança no ecossistema DevOps no qual ele prospera.

Uma introdução simples às métricas de software

Uma introdução simples às métricas de software

Métricas de software são medidas usadas para quantificar vários aspectos de seu software. Esses aspectos podem variar de custo, qualidade e eficiência da equipe de desenvolvimento.

Como instalar o .NET Framework versão 3.5 no Windows 10

Como instalar o .NET Framework versão 3.5 no Windows 10

Como um usuário do Windows, você provavelmente já se deparou com as palavras .NET Framework pelo menos uma vez. É uma estrutura de software desenvolvida pela Microsoft que permite criar e executar programas C #, C ++, F # e Visual Basic. A versão mais recente do .NET é 4.8, mas seu computador pode precisar de uma versão mais antiga do .NET (como .NET 3.5) para executar alguns aplicativos.

Flask ou CherryPy: Qual framework Python você deve usar?

Flask ou CherryPy: Qual framework Python você deve usar?

Se você é um desenvolvedor Python, pode se beneficiar muito com a variedade de estruturas disponíveis. Embora algumas estruturas sejam mais adequadas para grandes ecossistemas, outras se especializam em atender a objetivos de desenvolvimento específicos. Continue lendo para aprender os recursos básicos, usos e diferenças entre dois frameworks Python: Flask e CherryPy.

Como encontrar cubos e quadrados perfeitos de N dígitos usando Python, C ++ e JavaScript

Como encontrar cubos e quadrados perfeitos de N dígitos usando Python, C ++ e JavaScript

Muitos programadores adoram resolver problemas matemáticos complicados usando código. Ajuda a aguçar a mente e melhorar as habilidades de resolução de problemas. Neste artigo, você aprenderá a encontrar os menores e os maiores quadrados e cubos perfeitos de n dígitos usando Python, C ++ e JavaScript. Cada exemplo também contém uma saída de amostra para vários valores diferentes.

Como adicionar Python à variável PATH do Windows

Como adicionar Python à variável PATH do Windows

A execução do Python a partir do terminal costuma ser inevitável. No entanto, se você acabou de instalar o Python no Windows 10 pela primeira vez, executá-lo por meio do Terminal do Windows só será possível se for adicionado à variável de ambiente PATH do Windows.

Como usar a instrução if do Python

Como usar a instrução if do Python

A instrução if é a força motriz da programação lógica. Como resultado, um melhor domínio do Python é um acréscimo significativo às suas habilidades de programação em Python.

Como usar Python como uma calculadora de linha de comando

Como usar Python como uma calculadora de linha de comando

Embora você possa usar uma calculadora gráfica em seu computador, o interpretador da linguagem de programação Python pode funcionar como uma calculadora de mesa. É uma piada de corrida tão popular na comunidade Python que foi mencionada no tutorial oficial. Veja como você pode usar Python como calculadora.

Os 8 melhores blogs Java para programadores

Os 8 melhores blogs Java para programadores

Como programador, você deve enfrentar desafios para sobreviver e construir algumas maravilhas no campo de desenvolvimento ou programação. Portanto, se você está procurando aprender uma linguagem de programação avançada para aprimorar suas habilidades profissionais, Java é um dos melhores candidatos.

7 comandos vitais para começar a usar Python para iniciantes

7 comandos vitais para começar a usar Python para iniciantes

Aprender uma nova linguagem de programação como Python torna-se fácil se você tiver um roteiro abrangente detalhando quais conceitos aprender como um iniciante e como progredir ainda mais para alcançar o próximo marco. Mesmo os programadores intermediários devem freqüentemente revisar seus fundamentos para construir uma base sólida para si mesmos.

Princípios de Web Design Responsivo

Princípios de Web Design Responsivo

Hoje em dia, é prática comum construir um site ou aplicativo que ajusta sua interface de usuário dependendo do navegador ou do dispositivo. Existem duas abordagens para atingir esse objetivo. O primeiro envolve a criação de diferentes versões de seu site ou aplicativo para diferentes dispositivos. Mas é ineficiente e pode levar a erros imprevisíveis.

Como contar o número de dígitos em um número usando C ++, Python e JavaScript

Como contar o número de dígitos em um número usando C ++, Python e JavaScript

Trabalhar com números é parte integrante da programação. Cada linguagem de programação fornece suporte para manipular números de muitas maneiras diferentes. Neste artigo, você aprenderá como encontrar o número total de dígitos em um inteiro usando abordagens iterativas, baseadas em log e baseadas em string.

As 9 melhores alternativas do Docker para gerenciamento de contêineres

As 9 melhores alternativas do Docker para gerenciamento de contêineres

Os contêineres são altamente benéficos para o desenvolvimento, implantação e gerenciamento de software em um ambiente virtual. O Docker é útil no processo de conteinerização, mas não é a única plataforma disponível. Se você estiver procurando por alternativas ao Docker, não procure mais. Esta lista mostra algumas alternativas do Docker ricas em recursos e eficientes para usar em seu próximo projeto.

SQL vs. NoSQL: Qual é o melhor banco de dados para seu próximo projeto?

SQL vs. NoSQL: Qual é o melhor banco de dados para seu próximo projeto?

SQL vs. NoSQL: Qual é o melhor banco de dados para seu próximo projeto?

Como incorporar tweets em suas postagens do WordPress

Como incorporar tweets em suas postagens do WordPress

Incorporar serviços de terceiros em suas postagens do WordPress é uma maneira empolgante de cativar o interesse de um visitante. O conteúdo incorporado também fornece dicas visuais que tornam a digitalização mais fácil. O WordPress facilitou a adição desse tipo de conteúdo.

Como excluir a pasta de módulos de nó com npkill

Como excluir a pasta de módulos de nó com npkill

Node.js é um ambiente de tempo de execução JavaScript que permite executar JavaScript fora dos navegadores da web, tornando-o uma escolha popular para o desenvolvimento de todos os tipos de aplicativos. Parte de sua popularidade se deve à grande quantidade de pacotes NPM disponíveis para facilitar a experiência do desenvolvedor.

Como escrever e compilar seu primeiro código de Solidity

Como escrever e compilar seu primeiro código de Solidity

Solidity é a linguagem de programação usada por contratos inteligentes na blockchain Ethereum. É uma linguagem de programação orientada a objetos com tipagem estática.