Web Scraping para coletar dados dos pilotos da Fórmula 1
Publicado por Diego Lopes (última atualização em 08/08/2020)
[ Hits: 3.145 ]
Homepage:
Este script coleta dados e gerar arquivos no formato XML. Os dados são sobre os pilotos, equipes, pontuação e país de origem.
Coleta dados das temporadas de 2010 à 2020.
Os arquivos são gerados na pasta onde está salvo este script.
#Autor:Redbulldog
#Data:25/07/2020
#Descrição: web scraping paa coletar dados dos pilotos da formula 1
from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError
from bs4 import BeautifulSoup
dados_cabechalo = []
anos_corridas = ['2010','2011','2012','2013','2014','2015','2016','2017','2018','2019','2020']
#user agente passa as informações sobre plataforma usada e sistema operacional
header = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36'}
#metodo para coletar toda pagina html
def coleta_html_pagina(url):
resposta = urlopen(Request(url, headers=header))
return BeautifulSoup(resposta, 'html.parser')
#método para coleta nomenclaturas das colunas
def cabeca_tabela(html):
return html.findAll('th')
def validaNull(dado):
if dado is not None:
return dado.getText()
else:
return 'NA'
#motando arquivo json
def gerarArquivo(pilotos, ano):
pilotos = pilotos.findAll('tr')
for piloto in pilotos:
f = open('{}{}{}.xml'.format(validaNull(piloto.find('span',{'class':'hide-for-tablet'})),validaNull(piloto.find('span',{'class':'hide-for-mobile'})),ano),'w')
#print(validaNull(piloto.find('td',{'class':'dark'})).getText())
f.write('<piloto>\n')
f.write('<{}>{}</{}>\n'.format(dados_cabechalo[1],validaNull(piloto.find('td',{'class':'dark'})),dados_cabechalo[1]))
f.write('<{}>{} {}</{}>\n'.format(dados_cabechalo[2],validaNull(piloto.find('span',{'class':'hide-for-tablet'})),validaNull(piloto.find('span',{'class':'hide-for-mobile'})),dados_cabechalo[2]))
f.write('<{}>{}</{}>\n'.format(dados_cabechalo[3],validaNull(piloto.find('td',{'class':'dark semi-bold uppercase'})),dados_cabechalo[3]))
f.write('<{}>{}</{}>\n'.format(dados_cabechalo[5],validaNull(piloto.find('td',{'class':'dark bold'})),dados_cabechalo[5]))
f.write('<ano>{}</ano>\n'.format(ano))
f.write('</piloto>\n')
f.close()
def acessoPagina(ano):
try:
#pegandos html
dados = coleta_html_pagina('https://www.formula1.com/en/results.html/{}/drivers.html'.format(ano))
#tratando dados
for dado in cabeca_tabela(dados):
dados_cabechalo.append(dado.getText())
#print(dados_cabechalo)
gerarArquivo(dados,ano)
except URLError as e:
print(e.status, e.reason)
except HTTPError as e:
print(e.status, e.reason)
#https://www.formula1.com/en/results.html/2020/drivers.html
if __name__ == '__main__':
for ano in anos_corridas:
acessoPagina(ano)
print(dados_cabechalo)
subwrite - um simples editor de texto em Python
Manipulando as informações do USBfs no Linux
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
VOL já não é mais como antes? (6)
É normal não gostar de KDE? (12)
E aí? O Warsaw já está funcionando no Debian 13? [RESOLVIDO] (15)
Secure boot, artigo interessante, nada técnico. (4)
copiar library para diretorio /usr/share/..... su com Falha na a... (1)









