MeuProvedor de Dados » Soluções » Raspagem da web » Desenvolvimento de Web Scraping » Python

Como raspar sites com Python

python de raspagem da web

Python é muito popular para a linguagem de programação web scraping. Neste artigo será descrito como utilizar o python 3 para web scraping e será utilizada a biblioteca BeautifulSoup/bs4. A internet contém toneladas de informações, é tão difícil para nós obter tudo e absorvê-lo, mesmo que tenhamos passado toda a nossa vida, então o que fazer quando você precisa acessar e analisar essas informações.
É aí que entra o papel do web scraping python. A raspagem da Web é uma técnica poderosa para obter e coletar dados de páginas da Web e preservar a estrutura de dados ao mesmo tempo, além de poder obter seus dados da forma mais útil.

Demonstração de vídeo

Script de amostra do Python Web Scraping

Vamos definir o exemplo do Python Scraper

Será criado um pequeno script com as próximas funções
1) extrair o preço dos produtos da página do produto da Amazon
2) o script deve suportar o cache de solicitação (é muito importante para depuração e desenvolvimento rápido)

Encontrar dados

Vamos olhar para o código HTML e encontrar as tags que temos que encontrar na página de destino.
Apenas para amostra vamos abrir o próximo url https://www.amazon.com/dp/B00OQVZDJM/
é o leitor Amazon Kindle.

Web scraping com Python Amazon

web scraping preços da amazon usando python web scraping

A melhor maneira de encontrar o preço do produto amazon é usar o google chrome Inspect Element Tool no preço da Amazon, veja como fazer isso na próxima imagem:

encontre tags para extração usando python web scraping

Código Python Web Scraper

Web Scraping python beautifulsoup

Vamos definir bibliotecas
Usaremos BeautifulSoup e urllib.request. urllib.request é muito importante aqui porque usaremos python 3.5.

[Code]
de urllib.request importar urlopen
de bs4 import BeautifulSoup
[/ Code]

Beautifulsoup vs Scrapy

Beautifulsoup vs Scrapy é uma pergunta muito frequente quando você inicia o python web scraping. Quando você inicia apenas a raspagem da web em python e não tem experiência, recomendamos usar o Beautifulsoup porque é simples e não requer conhecimento especial para gerenciá-lo. Scrapy é um bom framework para web scraping, mas você precisa ter experiência no próprio python para usá-lo.

Raspagem da Web Python 3

Preferimos usar o Python 3 para Web Scraping. Por quê ? Como o Python 3 suporta diferentes páginas de código e codificação melhor: é mais fácil desenvolver o scraper usando o python 3.

Codifique a função html_load

Conforme definimos em nossos objetivos, queríamos oferecer suporte ao armazenamento em cache para nossas solicitações de raspagem da web. Como será feito: será criado o diretório CACHE e cada requisição será salva neste diretório.
Portanto, isso significa que, se você quiser repetir solicitações da Web durante a depuração de código, obterá dados da pasta CACHE.
[código lang=”python”]
def html_load(url):
print("html_load", url)
dir_path = os.getcwd()
cache_dir = os.path.join(dir_path, 'cache')
if (não os.path.isdir(cache_dir)):
os.makedirs(cache_dir)
nome_do_arquivo = str(slugify(url)) + ".html"
cache_file = os.path.join(cache_dir, file_name)

html=”
if (não os.path.isfile(cache_file)):
resposta = urlopen(url)
dados = resposta.read()
html = data.decode('utf-8')
print("Salvo no arquivo chache: ", arquivo_cache)
f1 = codecs.open(cache_file, 'w', 'utf-8')
f1.write(html)
f1.fechar()
outro:
print("Os dados foram retirados do cache: ", cache_file)
f = codecs.open(cache_file,'r', 'utf-8')
html = f.ler()
retornar html
[/ Code]

Extração de dados com Python

No nosso caso, temos que encontrar a próxima tag
[código lang=”html”]
<id do intervalo="priceblock_ourprice" class="a-size-medium a-color-price">$119.99</span>
[/ Code]

Como encontrá-lo? Temos que encontrar a tag SPAN com o atributo 'id' que tem o valor 'priceblock_ourprice'.

Vamos codificá-lo com Python e BeautifulSoup

[código lang=”python”]
price_text = soup.find('span', attrs={'id':'priceblock_ourprice'})
[/ Code]

Amostra de Web Scraping Python

Encontre abaixo o código completo, por favor:

[código lang=”python”]
importar codecs
de urllib.request importar urlopen
de bs4 import BeautifulSoup
importar os
importar hashlib

def slugify(s):
#hd = hashlib.sha1(s.encode('utf-8')).hexdigest()
hd = hashlib.md5(s.encode('utf-8'))
r = str(hd.hexdigest())
#hd = hash(s)
retornar r

def html_load(url):
print("html_load", url)
dir_path = os.getcwd()
cache_dir = os.path.join(dir_path, 'cache')
if (não os.path.isdir(cache_dir)):
os.makedirs(cache_dir)
nome_do_arquivo = str(slugify(url)) + ".html"
cache_file = os.path.join(cache_dir, file_name)

html=”
if (não os.path.isfile(cache_file)):
resposta = urlopen(url)
dados = resposta.read()
html = data.decode('utf-8')
print("Salvo no arquivo chache: ", arquivo_cache)
f1 = codecs.open(cache_file, 'w', 'utf-8')
f1.write(html)
f1.fechar()
outro:
print("Os dados foram retirados do cache: ", cache_file)
f = codecs.open(cache_file,'r', 'utf-8')
html = f.ler()
retornar html

print('script iniciado')
my_url = 'https://www.amazon.com/dp/B00OQVZDJM/'
html = html_load(meu_url)
sopa = BeautifulSoup(html, 'html.parser')
price_text = soup.find('span', attrs={'id':'priceblock_ourprice'})

print('preço: ', preço_texto.texto)

[/ Code]

Baixar Python Web Scraper

Preparamos um conjunto completo de arquivos relacionados ao projeto. Então você pode baixar Raspador de Web Python aqui:

Desenvolvemos esse Scraper usando o Visual Studio Code e a extensão Python.

como executar e depurar o web scraper python usando ferramentas vscode