Tutorial do site Scraping com Python: Dicas e Truques

Python, Scraping, Dez-31-20215 minutos de leitura

Você pode extrair automaticamente grandes quantidades de dados de sites usando o site scraping e salvá-los em um banco de dados ou em um arquivo. Os dados extraídos podem ser armazenados principalmente em uma planilha ou em um formato tabular. A Web scraping também é chamada de web harvesting de extração de dados da Web. Ela é necessária porque a scraping manual é uma tarefa tediosa

Índice

Você pode extrair automaticamente grandes quantidades de dados de sites usando o site scraping e salvá-los em um banco de dados ou em um arquivo. Os dados extraídos podem ser armazenados principalmente em uma planilha ou em um formato tabular. A Web scraping também é chamada de web harvesting de extração de dados da Web. Ela é necessária porque a scraping manual é uma tarefa tediosa que pode levar horas ou até dias para ser concluída. Portanto, você precisa automatizar o processo e extrair os dados dos sites em uma fração de tempo.

Você pode usar o software scraping para carregar, rastrear e extrair automaticamente dados de várias páginas de um site com base em suas necessidades e requisitos. Em resumo, você pode obter os dados desejados de sites com o clique de um botão. No mundo moderno, as empresas precisam analisar os dados e executar ações inteligentes. Mas, às vezes, obter dados de sites é difícil quando os proprietários de sites empregam técnicas como proibições de IP e CAPTCHAs. Você pode usar servidores proxy ou VPNs para superar esse problema, pois eles o ajudam a scrape dados da Web de forma anônima. 

Por que a Web Scraping é necessária?

Empresas de todo o mundo scrape dados da Web para obter insights úteis, armazenando-os em um formato utilizável. Alguns dos prós da Web scraping em vários setores são apresentados a seguir.

  • A Web scraping coleta conjuntos de dados de treinamento e teste para projetos de aprendizado de máquina.
  • No comércio eletrônico, a Web scraping é usada para monitorar os preços dos concorrentes.
  • O site scraping é usado no setor imobiliário para obter detalhes da propriedade e do proprietário/agente.
  • Em Marketing, a Web scraping é usada para criar listas telefônicas e de e-mail para contato frio.

Abaixo estão os principais motivos para scraping dados da Web.

Obtenção de automação - Você pode extrair dados de sites usando raspadores da Web robustos. Dessa forma, você pode economizar tempo em tarefas rotineiras de coleta de dados. Você pode coletar dados em um volume maior do que um único ser humano jamais poderia alcançar com a Web scraping. Além disso, você também pode criar sofisticados bots da Web para automatizar atividades on-line usando uma linguagem de programação como Python, Javascript ou uma ferramenta da Web scraping .

Conjuntos de dados ricos e exclusivos - Você pode obter uma grande quantidade de imagens, vídeos, textos e dados numéricos da Internet. Você também pode encontrar sites relevantes e criar seu conjunto de dados personalizado para análise, dependendo do seu objetivo. Por exemplo, você está interessado em entender o mercado de esportes do Reino Unido em profundidade. Você pode configurar raspadores da Web para coletar o conteúdo de vídeo ou informações sobre estatísticas de futebol para você.

Gerenciamento eficaz de dados - Não é necessário copiar e colar dados da Internet, pois você pode coletar dados com precisão de vários sites com a Web scraping. Dessa forma, sua empresa e seus funcionários podem dedicar mais tempo ao trabalho criativo, armazenando dados de forma eficaz com softwares e programas automáticos.

Business Intelligence e Insights - A Web scraping da Internet permite que você faça o seguinte:

  • Monitorar a atividade de marketing dos concorrentes
  • Pesquisa de preços dos concorrentes
  • Construir uma visão mais ampla de seu mercado

Além disso, as empresas podem tomar decisões melhores baixando, limpando e analisando dados em um volume significativo.

Velocidade - O Web scraping extrai dados de sites com grande velocidade. Ele permite que você scrape dados em horas, em vez de dias. Mas alguns projetos podem levar tempo, dependendo de sua complexidade e dos recursos e ferramentas que usamos para realizá-los.

Precisão dos dados - A extração manual de dados de sites envolve erro humano, o que leva a problemas sérios. Portanto, a extração precisa de dados é crucial para qualquer informação, o que pode ser feito com a Web scraping.

Web Scraping em Python

Suponha que você precise extrair dados desse site. Você precisará instalar os dois módulos Python, ou seja, requests e BeautifulSoup. 

Importar bibliotecas

Você pode instalar esses módulos usando o seguinte comando.

!pip install requests
!pip install BeautifulSoup

Você pode importar esses módulos como:

from bs4 import BeautifulSoup
importar solicitações

Você pode clicar no botão Inspect (Inspecionar) no canto superior esquerdo do site para destacar os elementos que deseja extrair. Em nosso caso, queremos extrair os dados da tabela desse site, conforme mostrado abaixo.

Adicionar cabeçalho e URL

Você precisa adicionar o cabeçalho e o URL às suas solicitações. O cabeçalho pode retirar sua solicitação para que ela pareça vir de um navegador legítimo. 

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36'}

url = "https://en.wikipedia.org/wiki/List_of_national_capitals"

Você pode usar a função requests.get() para enviar uma solicitação GET para o URL especificado.

r = requests.get(url, headers=headers)

Objeto BeautifulSoup

Você precisa inicializar um objeto BeautifulSoup e mencionar seus parâmetros. Em seguida, você deve extrair todas as linhas da tabela. Você pode obter todos os elementos da tabela usando o método find_all(), conforme mostrado no código abaixo.

soup = BeautifulSoup(r.content, "html.parser")
table = soup.find_all('table')[1]
rows = table.find_all('tr')
row_list = list()

Iteração por linhas

Você pode usar um loop for para iterar por todas as linhas da tabela, conforme mostrado no código abaixo.

for tr in rows:
   td = tr.find_all('td')
    row = [i.text for i in td]
    row_list.append(row)

Criar um Dataframe

Você poderá visualizar claramente os dados extraídos se criar um quadro de dados do Pandas e exportar os dados para um arquivo .csv. Para criar um dataframe, você precisa importar o Pandas, conforme mostrado abaixo.

importar pandas como pd

Agora, você pode converter seu objeto soup em um dataframe que conterá as seguintes linhas da tabela.

  • Cidade
  • País
  • Notas

Você pode converter seu dataframe em um formato csv e imprimir seu dataframe conforme mostrado abaixo.

df_bs = pd.DataFrame(row_list,columns=['City','Country','Notes'])
df_bs.set_index('Country',inplace=True)
df_bs.to_csv('beautifulsoup.csv')
print(df_bs)

Você obterá o resultado abaixo.

Proxies Para a Web Scraping usando Python

O site proxy atua como intermediário ou intermediário entre um cliente e um servidor. Ele oculta seu endereço IP real e ignora os filtros e a censura. Você pode obter uma lista gratuita de proxies usando apenas uma função em Python, conforme mostrado nas etapas abaixo.

Importar bibliotecas

Você precisa importar os módulos abaixo no Python.

from bs4 import BeautifulSoup
importar requests
import random

Definir uma função

Você pode definir uma função get_free_proxies() na qual deve mencionar o URL da lista proxy gratuita. Em seguida, você deve criar um objeto BeautifulSoup e obter a resposta HTTP usando a função requests.get(). 

def get_free_proxies():
    url = "https://free-proxy-list .net/"
    soup = bs(requests.get(url).content, "html.parser")
   proxies = []

Usar um For Loop

Você pode usar o método find_all() no loop for para iterar por todas as linhas da tabela, conforme mostrado abaixo.

for row in soup.find("table", attrs={"id": "proxylisttable"}).find_all("tr")[1:]:
        tds = row.find_all("td")
        try:
            ip = tds[0].text.strip()
            port = tds[1].text.strip()
            host = f"{ip}:{port}"
            proxies.append(host)
        except IndexError:
            continue
    return proxies

Lista de trabalho Proxies

Você pode mencionar a lista de alguns sites que funcionam proxies , como o que mencionamos abaixo.

proxies = [
    '167.172.248.53:3128',
   '194.226.34.132:5555',
   '203.202.245.62:80',
    '141.0.70.211:8080',
    '118.69.50.155:80',
    '201.55.164.177:3128',
   '51.15.166.107:3128',
   '91.205.218.64:80',
    '128.199.237.57:8080',
]

Solicitar sessão

Você precisa criar uma função get_session() que aceitará uma lista de proxies. Ela também cria uma sessão de solicitações que seleciona aleatoriamente qualquer um dos proxies passados, conforme mostrado no código abaixo.

def get_session(proxies):
  session = requests.Session()
  proxy = random.choice(proxies)
  session.proxies = {"http": proxy, "https": proxy}
  return session

Fazer uma solicitação

Você pode usar um loop for para fazer uma solicitação a um site e obter um endereço IP como retorno.

for i in range(5):
    s = get_session(proxies)
    try:
       print("Request page with IP:", s.get("http://icanhazip.com", timeout=1.5).text.strip())
    exceto Exception as e:
        continue

Você pode obter o seguinte resultado.

Por que o Proxies é importante para a Web Scraping?

As empresas podem extrair dados valiosos para tomar decisões orientadas por dados e oferecer serviços baseados em dados com a Web scraping. Proxies são importantes para a Web scraping pelos seguintes motivos.

  • Com o proxies, você pode fazer solicitações de uma determinada região geográfica e ver o conteúdo específico que o site exibe para esse local. Esse recurso do proxies é vantajoso quando se trata de scraping dados de produtos de varejistas on-line.
  • Proxies permitem que você faça um volume maior de solicitações a um site de destino sem ser bloqueado ou banido.
  • Proxies permitem que você rastreie dados de sites de forma mais confiável e eficiente.
  • Com o proxies, você pode fazer sessões simultâneas ilimitadas no mesmo site ou em sites diferentes sem medo de ser banido.
  • O site proxy oculta o endereço IP de seu computador do site de destino, proporcionando assim mais segurança ao seu dispositivo.
  • As empresas usam o site proxies para monitorar os preços e as características dos produtos da concorrência e aprimorar seus serviços e produtos.

Conclusão sobre este tutorial do Python para a Web Scraping

Até agora, discutimos que o site scraping nos ajuda a extrair dados de sites de forma automatizada. Você pode converter os dados em um formato utilizável, como um arquivo .csv. As empresas usam a Web scraping para verificar os preços e os recursos dos produtos da concorrência. A Web scraping é de grande utilidade se você usar proxies , pois ela mantém sua identidade anônima ao ocultar seu endereço IP original do site de destino. Com o proxiesvocê pode enviar várias solicitações ao site sem medo de ser bloqueado ou banido.