Como já referimos anteriormente, precisamos de obter o título das publicações, o autor e o número de votos positivos. Comecemos por importar os pacotes BeautifulSoup e Pandas e criar três matrizes vazias para cada tipo de informação de que precisamos.
from bs4 import BeautifulSoup
import pandas as pd
titles = []
upvotes=[]
authors = []
Vamos usar o BeautifulSoup para analisar o documento HTML escrevendo as seguintes linhas:
content = driver.page_source
soup = BeautifulSoup(content, features="html.parser")
Depois de inspecionar com sucesso o documento HTML e escolher os seletores certos, vamos agora buscar os títulos, votos positivos e autores e atribuí-los à matriz correta:
for element in soup.findAll('div', attrs={'class': '_1oQyIsiPHYt6nx7VOmd1sz'}):
title = element.find('h3', attrs={'class': '_eYtD2XCVieq6emjKBH3m'})
upvote = element.find('div', attrs={'class': '_3a2ZHWaih05DgAOtvu6cIo'})
author = element.find('a', attrs={'class': '_23wugcdiaj44hdfugIAlnX'})
titles.append(title.text)
upvotes.append(upvote.text)
authors.append(author.text)
Por fim, vamos armazenar a informação num ficheiro CSV utilizando o pacote Pandas que importámos anteriormente.
df = pd.DataFrame({'Post title': titles, 'Author': authors, 'Number of upvotes': upvotes})
df.to_csv('posts.csv', index=False, encoding='utf-8')
E pronto! Vamos dar uma olhadela no ficheiro exportado:
Parece ter toda a informação de que precisamos.
Dica extra: Por vezes, precisamos de mais dados do que os que o site fornece na primeira carga. Na maioria das vezes, a ação de recolha de dados é acionada quando o utilizador faz scroll para baixo. Se precisar de fazer scroll para baixo para obter mais dados, pode usar o método .execute_script() da seguinte forma:
scrollDown = "window.scrollBy(0,2000);"
driver.execute_script(scrollDown)
Considerações finais
Espero que tenha gostado de criar o web scraper tanto quanto eu. Programar nem sempre é divertido, mas construir pequenos scripts como este lembra-me de quando estava a começar e torna o processo muito mais interessante.
Ainda assim, o script que conseguimos criar neste tutorial não consegue fazer muito trabalho pesado. Faltam-lhe algumas funcionalidades essenciais que tornam o web scraping perfeito. Ligar-se usando proxies móveis ou residenciais e resolver CAPTCHAs são apenas algumas delas.
Se procura uma forma mais profissional de extrair dados, veja o que a WebScrapingAPI pode fazer e comprove por si mesmo se é o que procura. Existe um pacote gratuito, pelo que o único investimento é 30 minutos do seu tempo.
Obrigado por ter dedicado o seu tempo a ler isto. Boa extração!