Exercício 1:
Baixe seu perfil no Linkedin em PDF e utilize o PyPDF2 para construir uma função que retorne a string do texto completo do documento.
Exercício 2:
Utilize Regex (módulo `re` nativo do Python) para criar uma função que, a partir do texto extraído, retorne um dicionário com as seguintes informações:
Seu número de telefone;
Seu endereço de email; e
O link do seu perfil no Linkedin.
Exercício 3:
Aplique as funções geradas nas questões 1 e 2 para fazer o mesmo com o pdf em anexo (perfil do professor) e crie um csv com todas as informações extraídas (colunas: nome, telefone, email e perfil, tanto do pdf de vocês quanto do fornecido) utilizando o módulo `csv` nativo do python. Obs.: Ao final os padrões utilizados no Regex devem abarcar os conteúdos dos dois PDFs.
Parte 2 APIs
Exercício 4:
Explore o “playground” da API do SimilarWeb encontrada no RapidAPI (
https://rapidapi.com/Glavier/api/similarweb12/playground/) e inscreva-se no plano gratuito, então crie um código para obter os dados dos 10 primeiros sites listados em “top-websites”, salvando-os em um dataframe do Pandas e enfim em um arquivo CSV usando o próprio Pandas.
Parte 3 XPath
Exercício 5:
Utilize o arquivo XML em anexo e a biblioteca `lxml` com caminhos relativos de XPath para:
Selecionar os nomes de todos *estudantes* que estejam no 2º ano ou acima dele;
Selecionar o nome do *professor* de Estruturas de Dados (course: "Data Structures");
Selecionar os títulos de todos os *cursos* ofertados pelo departamento de Ciência da Computação (department: Computer Science);
Selecionar os nomes de todos os *departamentos* que sejam pertencentes à Escola de Engenharia (college: Engineering).
Parte 4 CSS
Exercício 6:
Utilize o arquivo xml em anexo e a biblioteca `lxml` com seletores de css para:
selecionar os títulos de todos os cursos cujos professores possuem estabilidade (tenure);
selecionar os títulos de todos os cursos que possuem horário de início pela manhã (am). Dica: cuidado com nomes antigos de pseudo-classes, caso algum não funcione tente o nome antigo.
Parte 5 WebCrawling
Exercício 7:
Examine um site de sua escolha na lista de sites fornecida em anexo e descubra o padrão de URL para paginação que ele aceita. Então, utilize-o para obter uma lista de links de notícias requisitando as 2 primeiras páginas e raspando os links de cada uma através de um único seletor de CSS aplicado via `BeautifulSoup`.
Parte 6 WebScraping
Exercício 8:
Faça um loop para os 3 primeiros links da lista obtida na questão anterior requisitando o HTML de cada página com a biblioteca que preferir (`urllib`, `requests`, etc.) E aplicando funções baseadas em `Beautifulsoup` para capturar e por fim salvar em um mesmo arquivo json, junto à url de cada notícia e ao datetime do momento da requisição de cada página:
o objeto datetime (timezone-aware) da data e hora da publicação da notícia;
o título da notícia;
o corpo do texto da notícia;
o subtítulo da notícia (se houver);
o autor ou autores da notícia (se houver).
Parte 7 Scrapy
Exercício 9:
Escolha um dos sites da lista fornecida (que não tenha sido escolhido nas anteriores) para montar um projeto no Scrapy que abarque tanto o Crawling quanto o Scraping, a fim de rodá-lo tal como na questão anterior.
Parte 8 Selenium
Exercício 10:
Extraia uma lista de empregos do site
https://br.indeed.com. Extraia os títulos dos empregos da primeira página de resultados ao pesquisar por "Data Scientist" na área da capital de seu estado. O site usa JavaScript para carregar as listas dinamicamente, o que significa que você não pode recuperar esses dados simplesmente usando solicitações ou BeautifulSoup. Escreva um script em Python usando Selenium para extrair os títulos dos empregos desta página junto a outras informações que você considere relevante.
Contexto Geral do Projeto
Usar o mínimo possível de chatGPT ou qualquer outra AI, caso contrário não vou aceitar pois quero entender o código como se fosse de uma pessoa.
Prazo de Entrega: 04 de Outubro de 2024