Raspagem na web usando python

Raspagem na web usando python
A raspagem na web é uma maneira automatizada de extrair e processar informações de sites da Internet em uma quantia muito grande. Os dados nos sites da Internet não estão estruturados, que podem ser coletados e estruturados através de raspagem na web. Motores de pesquisa como Google, Bing, Yahoo têm bots que raspam dados de sites da Internet e os indexam em suas páginas de pesquisa. Os dados também podem ser extraídos usando APIs, que provavelmente é uma das melhores maneiras de extrair dados da web. Sites famosos como Facebook, Google, Amazon fornecem aos usuários APIs bem estruturadas para interagir com dados, mas você não verá essas APIs em todos os lugares.

Por exemplo, se você deseja obter atualizações regulares sobre seus produtos favoritos para ofertas de desconto ou deseja automatizar o processo de download de episódios da sua temporada favorita por um, e o site não possui nenhuma API para isso, então a única opção Você deixou com a raspagem da web.A raspagem na web pode ser ilegal em alguns sites, dependendo de um site permitir ou não. Os sites usam “robôs.arquivo txt ”para definir explicitamente URLs que não podem ser descartados. Você pode verificar se o site permite ou não anexando “robôs.txt ”com o nome de domínio do site. Por exemplo, https: // www.Google.com/robôs.TXT

Neste artigo, usaremos o Python para raspar porque é muito fácil de configurar e usar. Possui muitas bibliotecas internas e de terceiros que podem ser usadas para raspar e organizar dados. Usaremos duas bibliotecas Python "Urllib" para buscar a página da web e "BongeSoup" para analisar a página da web para aplicar operações de programação.

Como funciona a raspagem da web?

Enviamos uma solicitação para a página da web, de onde você deseja raspar os dados. O site responderá à solicitação com conteúdo HTML da página. Em seguida, podemos analisar esta página da Web em BeltoSup para um processamento adicional. Para buscar a página da web, usaremos a biblioteca "urllib" em Python.

Urllib vai baixar o conteúdo da página da web em HTML. Não podemos aplicar operações de string a esta página da Web HTML para extração de conteúdo e processamento adicional. Usaremos uma biblioteca Python "BeautifulSoup" que analisará o conteúdo e extrairá os dados interessantes.

Artigos de raspagem de Linuxhint.com

Agora que temos uma idéia de como a raspagem da web funciona, vamos fazer alguma prática. Tentaremos raspar os títulos e links do Linuxhint.com. Então aberto https: // linuxhint.com/ em seu navegador.

Agora pressione CRTL+U para visualizar o código -fonte HTML da página da web.

Copie o código -fonte e vá para https: // htmlformatter.com/ para prettificar o código. Depois de lidar com o código, é fácil inspecionar o código e encontrar informações interessantes.

Agora, novamente copie o código formatado e cole -o em seu editor de texto favorito como Atom, Sublime Text etc. Agora vamos raspar as informações interessantes usando Python. Digite o seguinte

// Instale a bela biblioteca de sopa, o urllib vem
pré-instalado em Python
ubuntu@ubuntu: ~ $ sudo pip3 install bs4
ubuntu@ubuntu: ~ $ python3
Python 3.7.3 (padrão, 7 de outubro de 2019, 12:56:13)
[GCC 8.3.0] no Linux

Digite “ajuda”, “direitos autorais”, “créditos” ou “licença” para obter mais informações.

// importar urllib
>>> Importar urllib.solicitar
// Importar BeautifulSoup
>>> do BS4 Importar BeautifulSoup
// Digite o URL que você deseja buscar
>>> my_url = 'https: // linuxhint.com/'
// Solicite a página da URL usando o comando urlopen
>>> cliente = urllib.solicitar.urlopen (my_url)
// armazenar a página da web html na variável “html_page”
>>> html_page = cliente.ler()
// Feche a conexão da URL depois de buscar a página da web
>>> cliente.fechar()
// Analisar a página da web html para o belogus para raspar
>>> Page_Soup = BeautifulSoup (html_page, "html.analisador ")

Agora, vejamos o código -fonte HTML que acabamos de copiar e colar para encontrar coisas de nosso interesse.

Você pode ver que o primeiro artigo listado no Linuxhint.Com é nomeado “74 Exemplos de Operadores Bash”, encontre isso no código -fonte. Está fechado entre tags de cabeçalho e seu código é



class = "Categoria-1561"> Programação Bash


Title = "74 Exemplos de Operadores Bash"> 74 Operadores de Bash
Exemplos


O mesmo código se repete repetidamente com a alteração de títulos e links apenas de artigo. O próximo artigo tem o seguinte código HTML



class = "Categoria-1343"> Ubuntu
verniz


title = "Como configurar o cache de verniz no Ubuntu 18.04 ">
Como configurar o cache de verniz no Ubuntu 18.04


Você pode ver que todos os artigos, incluindo esses dois, estão entre os mesmos “

”Tag e use a mesma classe“ título de entrada ”. Podemos usar a função "findall" na biblioteca de sopa bonita para encontrar e listar tudo "

"Tendo a classe" Title de entrada ". Digite o seguinte em seu console python

// Este comando encontrará tudo “

”Tag elementos com classe nomeada
“Title de entrada”. A saída será armazenada em uma matriz.
>>> Artigos = Page_soup.Findall ("H2" ,
"class": "Entry-title")
// O número de artigos encontrados na primeira página do Linuxhint.com
>>> Len (artigos)
102
// primeiro extraído “

”Elemento de tag contendo nome do artigo e link
>>> Artigos [0]


Title = "74 Exemplos de Operadores Bash">>
74 Exemplos de Operadores Bash


// Segundo extraído “

”Elemento de tag contendo nome do artigo e link
>>> Artigos [1]


title = "Como configurar o cache de verniz no Ubuntu 18.04 ">
Como configurar o cache de verniz no Ubuntu 18.04


// exibindo apenas texto em tags html usando a função de texto
>>> Artigos [1].texto
'Como configurar o cache de verniz no Ubuntu 18.04 '

Agora que temos uma lista de todos os 102 html “

”Elementos de tag que contém link do artigo e título do artigo. Podemos extrair links e títulos de artigos. Para extrair links de tags "", podemos usar o seguinte código

// O código a seguir extrairá o link do primeiro

elemento de tag
>>> Para link em artigos [0].Find_all ('A', href = true):
… Print (link ['href'])
..
https: // linuxhint.com/bash_operator_examples/

Agora podemos escrever um loop que itera através de cada “

"Elemento de tag na lista" Artigos "e extraia o link e o título do artigo.

>>> Para I no intervalo (0,10):
… Print (artigos [i].texto)
… Para link em artigos [i].Find_all ('A', href = true):
… Print (link ['href']+"\ n")
..
74 Exemplos de Operadores Bash
https: // linuxhint.com/bash_operator_examples/
Como configurar o cache de verniz no Ubuntu 18.04
https: // linuxhint.com/varnish_cache_ubuntu_1804/
Pinetime: um smartwatch amigável ao Linux
https: // linuxhint.com/pinetime_linux_smartwatch/
10 melhores laptops Linux baratos para comprar com um orçamento
https: // linuxhint.com/best_cheap_linux_laptops/
HD Remastered Games for Linux que nunca teve um lançamento do Linux…
https: // linuxhint.com/hd_remastered_games_linux/
Aplicativos de gravação de tela de 60 fps para Linux
https: // linuxhint.com/60_fps_screen_recording_apps_linux/
74 Exemplos de Operadores Bash
https: // linuxhint.com/bash_operator_examples/
… Snip…

Da mesma forma, você salva esses resultados em um arquivo JSON ou CSV.

Conclusão

Suas tarefas diárias não são apenas gerenciamento de arquivos ou execução do comando do sistema. Você também pode automatizar tarefas relacionadas à Web, como Automação de download de arquivos ou extração de dados, raspando a Web no Python. Este artigo foi limitado a apenas extração de dados simples, mas você pode fazer uma enorme automação de tarefas usando "urllib" e "beakesoup".