Este script automatiza a extração de informações públicas de startups listadas na Web Summit, acessando suas páginas individuais e coletando:
- Nome da startup
- Descrição
- País
- Segmento
- Link para Instagram
- Link para LinkedIn
- Website oficial
Os dados são extraídos usando Selenium + BeautifulSoup e salvos em um arquivo .xlsx.
Um arquivo CSV chamado startup_urls.csv com a seguinte estrutura:
url
https://websummit.com/appearances/lis24/xxxxxx/startup-name
https://websummit.com/appearances/lis24/yyyyyy/startup-name-2
...A coluna url deve conter os links diretos das startups no site da Web Summit.
Instale os pacotes necessários:
pip install selenium beautifulsoup4 pandas chromedriver-autoinstaller openpyxl- Lê as URLs do arquivo
startup_urls.csv - Abre cada página usando Selenium (com Chrome)
- Aguarda até que os dados estejam carregados
- Usa BeautifulSoup para fazer parsing do HTML
- Extrai os dados usando seletores CSS
- Filtra os links do Instagram e LinkedIn
- Coleta o link do website (posição 2 entre os botões)
- Armazena todos os dados em uma planilha Excel (
.xlsx)
perfis_extraidos.xlsx: Planilha com os dados extraídoserros_de_extracao.xlsx(opcional): URLs que apresentaram falha na coleta
- Usa
chromedriver_autoinstallerpara garantir compatibilidade com o navegador. Seleniumé usado para renderizar a página e esperar o conteúdo carregar.
df_urls = pd.read_csv('startup_urls.csv')soup.select('[class^="headlines__H1"]') # Nome
soup.select('[class^="ProfileDetails__ProfileDetailsContent"] > div') # Descrição
soup.select('[class^="ContentTagList__ContentTagListItem"]') # País e Segmento
soup.select('[class^="DetailsLayout__SocialMediaWrapper"]') # Redes sociais
soup.select('[class^="Button__StyledButton"]') # Botões (Website)- Instagram: se
'instagram.com' in href - LinkedIn: se
'linkedin.com' in href - Website: botão na posição 2 (índice 2) da lista de botões com
href
| name | description | country | segment | web_site | ||
|---|---|---|---|---|---|---|
| Schoolux | Edtech startup | Brazil | EdTech | https://instagram.com/... | https://linkedin.com/... | https://schoolux.ai |
- Adicionar
time.sleep()aleatório entre requisições para evitar bloqueios. - Permitir salvar dados parcialmente mesmo se interrompido.
- Usar
tqdmpara barra de progresso. - Modularizar em funções ou classes para reaproveitamento.
Este script automatiza a extração de endereços de e-mail de sites informados em um arquivo .csv. Ele navega nas páginas iniciais e também em páginas relacionadas a contato, utilizando Selenium e re (expressões regulares).
Um arquivo CSV chamado links.csv com uma coluna url:
url
https://empresa1.com
https://empresa2.org
...emails_encontrados.csv: Contém os sites e os e-mails encontrados.sem_email.csv: Lista os sites onde nenhum e-mail foi encontrado.
pip install selenium pandas chromedriver-autoinstaller- Lê os sites a partir de
links.csv. - Usa
Selenium(em modo headless) para visitar os sites. - Extrai os e-mails da página inicial.
- Se necessário, acessa páginas de contato (usando palavras-chave como “contato”, “contact”, etc.).
- Extrai e valida os e-mails usando expressões regulares.
- Salva os resultados em dois arquivos CSV.
KEYWORDS = ['contato', 'fale conosco', 'about', 'about us', 'contact', 'contact us', 'contáctanos']Extrai e padroniza o domínio a partir da URL.
Gera um padrão regex específico para e-mails daquele domínio.
Configura o navegador Chrome para automação.
Busca e-mails na página atual com base no padrão regex.
Procura links na página atual que levem a páginas de contato.
Função principal que executa o processo de scraping em um único site.
Salva os e-mails encontrados e os sites sem e-mail nos arquivos finais.
- Adicionar suporte a múltiplos domínios por página.
- Tornar o tempo de
sleepaleatório para evitar bloqueios. - Adicionar tratamento para redirecionamentos.
- Incluir barra de progresso com
tqdm.
Willian Phaiffer Cardoso.