
Web Crawler Interativo via CLI
Web Crawler Interativo de CLI.
Evine é um web crawler e web scraper simples, rápido e interativo escrito em Golang. Evine é útil para uma ampla gama de propósitos, como extração de metadados e dados, mineração de dados, reconhecimento e testes.
Se você gostou do projeto, dê uma estrela. Isso me força a desenvolvê-lo!
Pré-compilações de binários também estão disponíveis (Recomendado).
go get github.com/saeeddhqan/evine
"$GOPATH/bin/evine" -h
git clone https://github.com/saeeddhqan/evine.git
cd evine
go build .
mv evine /usr/local/bin
evine --help
Nota: necessário golang 1.13.x.
evine -h
Isso exibirá a ajuda da ferramenta:
Chaves são palavras-chave predefinidas que podem ser usadas para especificar dados como URLs no escopo, URLs fora do escopo, e-mails, etc. Lista de todas as chaves:
Talvez você queira um arquivo que não está definido nas chaves. O que pode fazer? Basta escrever a extensão do arquivo na visão Consulta. ex: png,xml,txt,docx,xlsx,a,mp3, etc.
Se você possui habilidades básicas em JQuery, pode facilmente usar este recurso, mas se não, não é muito difícil. Para uma visão rápida sobre os seletores, o w3schools é uma ótima fonte.
Exemplo (para encontrar source[src]):
$("source").attr("src") // Para encontrar todas as URLs de source[src]
$("h1").text() // Para encontrar os valores de h1
Modelo:
$("SELECTOR").METHOD_NAME("arg")
Não suporta consultas como as abaixo:
$('SELECTOR').METHOD("arg")
$('SELECTOR').METHOD('arg')
$("SELECTOR" ).METHOD("arg" )
Os métodos são descritos abaixo:
Para relatar bugs ou sugestões, crie uma issue.
Evine é fortemente inspirado por wuzz.
| Atalho | Descrição |
|---|
| Enter | Executar crawler (da visão de URL) |
| Enter | Exibir resposta (das visões de Chaves e Regex) |
| Tab | Próxima visão |
| Ctrl+Espaço | Executar crawler |
| Ctrl+S | Salvar resposta |
| Ctrl+Z | Sair |
| Ctrl+R | Restaurar valores padrão (das visões de Opções e Cabeçalhos) |
| Ctrl+Q | Fechar visão de salvar resposta (da visão Salvar) |
| flag | Descrição | Exemplo |
|---|
| -url | URL para rastrear | evine -url toscrape.com |
| -url-exclude string | Excluir URLs que correspondem a esta regex (padrão ".*") | evine -url-exclude ?id= |
| -domain-exclude string | Excluir domínios dentro do escopo para rastrear. Separar por vírgula. padrão=domínio raiz | evine -domain-exclude host1.tld,host2.tld |
| -code-exclude string | Excluir códigos de status HTTP com esses códigos. Separar por '|' (padrão ".*") | evine -code-exclude 200,201 |
| -delay int | Pausa entre cada requisição (Milissegundos) | evine -delay 300 |
| -depth | Nível de profundidade de busca do scraper (padrão 1) | evine -depth 2 |
| -thread int | Número de goroutines concorrentes para resolução (padrão 5) | evine -thread 10 |
| -header | Cabeçalho HTTP para cada requisição (Os campos devem ser separados por \n). | evine -header KEY: VALUE\nKEY1: VALUE1 |
| -proxy string | Proxy no formato esquema://ip:porta | evine -proxy http://1.1.1.1:8080 |
| -scheme string | Definir o esquema para as requisições (padrão "https") | evine -scheme http |
| -timeout int | Segundos para esperar antes de expirar (padrão 10) | evine -timeout 15 |
| -query string | Expressão JQuery (pode ser uma extensão de arquivo (pdf), uma consulta de chave (url,script,css,..) ou um seletor jquery ($("a[class='hdr']).attr('hdr')"))) | evine -query url,pdf,txt |
| -regex string | Pesquisar a Expressão Regular nos conteúdos da página | evine -regex 'User.+' |
| -logger string | Registrar erros em um arquivo | evine -logger log.txt |
| -max-regex int | Resultado máximo da busca de regex para o campo regex (padrão 1000) | evine -max-regex -1 |
| -robots | Extrair URLs do robots.txt e usá-los como sementes | evine -robots |
| -sitemap | Extrair URLs do sitemap.xml e usá-los como sementes | evine -sitemap |
| -wayback | Extrair WayBackURLs (web.archive.org) e usá-los como sementes | evine -sitemap |