Python BeautifulSoup Tutorial para iniciantes

Python BeautifulSoup Tutorial para iniciantes
A raspagem na web é de grande importância no mundo de hoje. Todo mundo precisa de dados, de diferentes fontes, incluindo páginas da web. Neste artigo, veremos como analisar HTML com a biblioteca de belas grupos. Extrair os dados necessários de um monte de alfabetos e símbolos, graças a esta ótima biblioteca, tornou -se muito mais fácil. O belo grupo escrito em Python pode ser facilmente instalado em sua máquina usando a ferramenta de instalação Pypon Python. O comando a seguir ajudaria a instalar a biblioteca:
PIP Install BeautifulSoup4

Para verificar se a instalação foi bem -sucedida, ative o shell interativo do Python e importe o belo GreakeSoup. Se nenhum erro aparecer, significa que tudo correu bem. Se você não sabe como fazer isso, digite os seguintes comandos em seu terminal.

$ python
Python 3.5.2 (padrão, 14 de setembro de 2017, 22:51:06)
[GCC 5.4.0 20160609] no Linux
Digite "ajuda", "direitos autorais", "créditos" ou "licença" para obter mais informações.
>>> Importar BS4

Para trabalhar com a biblioteca BeautifulSoup, você precisa passar em HTML. Ao trabalhar com sites reais, você pode obter o HTML de uma página da Web usando a Biblioteca de Requests. A instalação e o uso da biblioteca de solicitações estão além do escopo deste artigo; no entanto, você pode encontrar o caminho da documentação, é muito fácil de usar. Para este artigo, simplesmente usaremos HTML em uma string python que estaríamos chamando html.

html = "" "

Perfil do funcionário



Nome:Dr. Peter Parker
Trabalho:Engenheiro de aprendizado de máquina
Telefone:+12345678910
E-mail:
[email protected]

Local na rede Internet:
pparkerworks.com



"" "

Para usar o BeautifulSoup, importamos -o para o código usando o código abaixo:

De BS4 Import BeautifulSoup

Isso introduziria o belo grupo em nosso espaço de nome e podemos usá -lo para analisar nossa string.

SOPA = BONAGEMSUP (HTML, "LXML")

Agora, sopa é um objeto bonito do tipo BS4.Bellesssoup e podemos executar todas as operações de belas grupos no sopavariável.

Vamos dar uma olhada em algumas coisas que podemos fazer com o beautifulsoup agora.

Tornando o feio, lindo

Quando o BeautifulSoup analisa o HTML, geralmente não está no melhor dos formatos. O espaçamento é muito horrível. As tags são difíceis de encontrar. Aqui está uma imagem para mostrar como eles seriam quando você conseguir imprimir o sopa:

No entanto, há uma solução para isso. A solução dá ao HTML o espaçamento perfeito, fazendo as coisas parecerem boas. Esta solução é merecidamente chamada de “embelezar““.

É certo que você pode não usar esse recurso na maioria das vezes; No entanto, há momentos em que você pode não ter acesso à ferramenta de elemento inspetor de um navegador da web. Naqueles tempos de recursos limitados, você encontraria o método de prettify muito útil.

Aqui está como você o usa:

sopa.embelezar()

A marcação ficaria espaçada corretamente, como na imagem abaixo:

Quando você aplica o método Prettify na sopa, o resultado não é mais um tipo BS4.Belo grupo. O resultado agora é tipo 'unicode'. Isso significa que você não pode aplicar outros métodos de belo grupo, no entanto, a sopa em si não é afetada, então estamos seguros.

Encontrando nossas tags favoritas

HTML é composto de tags. Ele armazena todos os seus dados neles e, no meio de toda essa desordem, está os dados de que precisamos. Basicamente, isso significa quando encontramos as tags certas, podemos conseguir o que precisamos.

Então, como encontramos as tags certas? Utilizamos os métodos de localização e find_all de BeautifulSoup.

Aqui está como eles funcionam:

O encontrar Método pesquisa a primeira tag com o nome necessário e retorna um objeto do tipo BS4.elemento.Marcação.

O encontrar tudo Método, por outro lado, pesquise todas as tags com o nome de tag necessário e as retorna como uma lista do tipo BS4.elemento.ResultSet. Todos os itens da lista são do tipo BS4.elemento.Tag, para que possamos realizar indexação na lista e continuar nossa exploração de belas belaspous.

Vamos ver algum código. Vamos encontrar todas as tags da div:

sopa.encontre ("div")

Obteríamos o seguinte resultado:

Nome:Dr. Peter Parker

Verificando a variável html, você notaria que esta é a primeira tag div.

sopa.encontre_all ("div")

Obteríamos o seguinte resultado:

[[
Nome:Dr. Peter Parker,
Trabalho:Engenheiro de aprendizado de máquina,
Telefone:+12345678910,
E-mail:
[email protected]
,
Local na rede Internet:
pparkerworks.com
]

Ele retorna uma lista. Se, por exemplo, você deseja a terceira tag div, você executa o seguinte código:

sopa.Find_all ("div") [2]

Ele retornaria o seguinte:

Telefone:+12345678910

Encontrando os atributos de nossas tags favoritas

Agora que vimos como obter nossas tags favoritas, que tal obter seus atributos?

Você pode estar pensando neste momento: “Para que precisamos de atributos?““. Bem, muitas vezes, a maioria dos dados de que precisamos será de endereços de e -mail e sites. Esse tipo de dados geralmente é hiperlink em páginas da web, com os links no atributo "href".

Quando extraímos a tag necessária, usando os métodos Find ou Find_all, podemos obter atributos aplicando attrs. Isso retornaria um dicionário do atributo e seu valor.

Para obter o atributo de email, por exemplo, obtemos as tags que envolvem as informações necessárias e fazemos o seguinte.

sopa.Find_all (“A“) [0].attrs

Que retornaria o seguinte resultado:

'href': 'Mailto: [email protected] '

A mesma coisa para o atributo do site.

sopa.Find_all (“A“) [1].attrs

Que retornaria o seguinte resultado:

'href': 'http: // pparkerworks.com '

Os valores retornados são dicionários e a sintaxe do dicionário normal pode ser aplicada para obter as chaves e os valores.

Vamos ver os pais e filhos

Existem tags em todos os lugares. Às vezes, queremos saber o que são as tags das crianças e qual é a tag pai.

Se você ainda não sabe o que é pai e filho, esta breve explicação deve ser suficiente: uma tag pai é a etiqueta externa imediata e uma criança é a etiqueta interna imediata da tag em questão.

Dando uma olhada no nosso HTML, a etiqueta corporal é a etiqueta pai de todas as tags div. Além disso, a etiqueta em negrito e a tag âncora são os filhos das tags da div, quando aplicável, pois nem todas as tags div possuem tags de ancoragem.

Para que possamos acessar a tag pai chamando o FindParent método.

sopa.encontre ("div").FindParent ()

Isso retornaria toda a etiqueta corporal:


Nome:Dr. Peter Parker
Trabalho:Engenheiro de aprendizado de máquina
Telefone:+12345678910
E-mail:
[email protected]

Local na rede Internet:
pparkerworks.com

Para obter a etiqueta infantil da quarta tag div, chamamos o FindChildren método:

sopa.Find_all ("Div") [4].FindChildren ()

Ele retorna o seguinte:

[[Local na rede Internet:, pparkerworks.com]

O que há para nós?

Ao navegar nas páginas da web, não vemos tags em todos os lugares na tela. Tudo o que vemos é o conteúdo das diferentes tags. E se queremos o conteúdo de uma tag, sem todos os colchetes angulares deixando a vida desconfortável? Isso não é difícil, tudo o que faríamos é ligar get_text Método na etiqueta de escolha e obtemos o texto na tag e se a tag tiver outras tags, ele também recebe seus valores de texto.

Aqui está um exemplo:

sopa.encontre ("corpo").get_text ()

Isso retorna todos os valores de texto na etiqueta do corpo:

Nome: Dr. Peter Parker
Trabalho: Engenheiro de Aprendizado de Máquina
Telefone: +12345678910
E -mail: [email protected]
Site: PParkerworks.com

CONCLUSÃO

É isso que temos para este artigo. No entanto, ainda existem outras coisas interessantes que podem ser feitas com o belo grupo. Você pode conferir a documentação ou usar Dir (BetterfulSoup) no shell interativo para ver a lista de operações que podem ser realizadas em um objeto de belo grupo. Isso é tudo de mim hoje, até que eu escrevo novamente.