Web Scraping para coletar dados dos pilotos da Fórmula 1
Publicado por Diego Lopes (última atualização em 08/08/2020)
[ Hits: 2.928 ]
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)
Detectando e excluindo imagens em branco obtidas de scanner
Converte valor de Bytes 2 Kbyte 2 Mbyte
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
VMs e Interfaces de Rede desapareceram (12)
Instalação do drive do adaptador wiffi (7)