O GooglesCraper é uma ferramenta de código aberto e continuará sendo uma ferramenta de código aberto no futuro.
Além disso, o sucessor moderno do Googlescraper, a infraestrutura de rastreamento de propósito geral, permanecerá de código aberto e gratuito.
Algumas pessoas, no entanto, desejam ter um serviço rapidamente que permita raspar alguns dados do Google ou de qualquer outro mecanismo de pesquisa. Por esse motivo, criei o serviço da web scrapeouul.com.
Último Estado: Feburário 2019
O sucessor do Googlescraper pode ser encontrado aqui
Isso significa que não vou mais manter este projeto. Todo o novo desenvolvimento vai no projeto acima.
Existem várias razões pelas quais não continuarei a colocar muito esforço nesse projeto.
Por esse motivo, continuarei desenvolvendo uma biblioteca de raspagem chamada https://www.npmjs.com/package/se-scraper em JavaScript, que é executada no topo do boneco.
Você pode baixar o aplicativo aqui: https://www.npmjs.com/package/se-scraper
Ele suporta uma ampla gama de mecanismos de pesquisa diferentes e é muito mais eficiente que o GooglesCraper. A base de código também é muito menos complexa sem os recursos de encadeamento/filas e log complexos.
Para perguntas, você pode entrar em contato comigo no meu wegpage e escrever um e -mail lá.
Este projeto está de volta a viver após dois anos de abandono. Nas próximas semanas, levarei algum tempo para atualizar todas as funcionalidades para os desenvolvimentos mais recentes. Isso abrange a atualização de todas as regexes e alterações no comportamento do mecanismo de pesquisa. Depois de algumas semanas, você pode esperar que este projeto funcione novamente conforme documentado aqui.
O GooglesCraper está escrito no Python 3. Você deve instalar pelo menos o Python 3.6. O último grande desenvolvimento foi feito com o Python 3.7. Portanto, ao usar o Ubuntu 16.04 e o Python 3.7, por exemplo, instale o Python 3 nos pacotes oficiais. Eu uso a distribuição do Anaconda Python, que funciona muito bem para mim.
Além disso, você precisa instalar o navegador Chrome e também o Chromedriver para o modo selênio. Alternativamente, instale o navegador Firefox e o Geckodriver para o modo selênio. Veja as instruções abaixo.
Você também pode instalar o GooglesCraper confortavelmente com o PIP:
virtualenv --python python3 env
source env/bin/activate
pip install GoogleScraper
No momento (setembro de 2018), isso é desencorajado. Por favor, instale a partir de fontes mais recentes do GitHub.
Às vezes, as coisas mais recentes e impressionantes não estão disponíveis na Cheesehop (é assim que eles chamam https://pypi.python.org/pypi/pip). Portanto, talvez você queira instalar o GooglesCraper a partir da fonte mais recente que reside neste repositório do GitHub. Você pode fazer isso assim:
virtualenv --python python3 env
source env/bin/activate
pip install git+git://github.com/NikolaiT/GoogleScraper/
Observe que alguns recursos e exemplos podem não funcionar conforme o esperado. Eu também não garanto que o aplicativo é executado. Eu garantei apenas (pelo menos até certo ponto) que a instalação do PIP produzirá uma versão utilizável.
Faça o download do mais recente Chromedriver: https://sites.google.com/a/chromium.org/chromedriver/downloads
Descompacte o motorista e salve -o em algum lugar e atualize o chromedriver_path no arquivo de configuração do GooglesCraper scrape_config.py para o caminho em que você salvou o driver chromedriver_path = 'Drivers/chromedriver'
Faça o download dos mais recentes Geckodriver daqui: https://github.com/mozilla/geckodriver/releases
Descompacte o motorista e salve -o em algum lugar e atualize o geckodriver_path no arquivo de configuração do GooglesCraper scrape_config.py no caminho em que você salvou o driver geckodriver_path = 'Drivers/geckodriver'
Atualize as seguintes configurações no arquivo de configuração do GooglesCraper scrape_config.py para seus valores.
# chrome driver executable path
# get chrome drivers here: https://chromedriver.storage.googleapis.com/index.html?path=2.41/
chromedriver_path = 'Drivers/chromedriver'
# geckodriver executable path
# get gecko drivers here: https://github.com/mozilla/geckodriver/releases
geckodriver_path = 'Drivers/geckodriver'
# path to firefox binary
firefox_binary_path = '/home/nikolai/firefox/firefox'
# path to chromium browser binary
chrome_binary_path = '/usr/bin/chromium-browser'
Instale conforme descrito acima. Certifique -se de ter os drivers de selênio para o Chrome/Firefox se quiser usar o GooglesCraper no modo selênio.
Veja todas as opções
GoogleScraper -h
Raspe a palavra -chave única "Apple" com o modo HTTP:
GoogleScraper -m http --keyword "apple" -v info
Raspe todas as palavras -chave que estão no arquivo SearchData/5words no modo selênio usando o Chrome no modo sem cabeça:
GoogleScraper -m selenium --sel-browser chrome --browser-mode headless --keyword-file SearchData/5words -v info
Raspa todas as palavras -chave que estão em
GoogleScraper -m http --keyword-file SearchData/some_words.txt --num-workers 5 --search-engines "bing,yahoo" --output-filename threaded-results.json -v debug
Faça uma pesquisa de imagem pela palavra -chave "K2 Mountain" no Google:
GoogleScraper -s "google" -q "K2 mountain" -t image -v info
Esta é provavelmente a característica mais impressionante do Googlescraper. Você pode raspar com milhares de solicitações por segundo, se qualquer um
Exemplo para o modo assíncrono:
Pesquise as palavras-chave no arquivo-chave Pesquisa de arquivo de pesquisa/marketing-models-brands.txt no Bing e Yahoo. Por padrão, o modo assíncrono gera 100 solicitações ao mesmo tempo. Isso significa cerca de 100 solicitações por segundo (depende da conexão real ...).
GoogleScraper -s "bing,yahoo" --keyword-file SearchData/marketing-models-brands.txt -m http-async -v info -o marketing.json
Os resultados (resultados parciais, porque havia muitas palavras -chave para um endereço IP) podem ser inspecionadas nas saídas de arquivo/marketing.json.
O Googlescraper é extremamente complexo. Como o GooglesCraper suporta muitos mecanismos de pesquisa e o HTML e o JavaScript desses provedores de pesquisa mudam com frequência, geralmente é o caso que o GooglesCraper deixa de funcionar em algum mecanismo de pesquisa. Para identificar isso, você pode executar testes funcionais .
Por exemplo, o teste abaixo executa uma sessão de raspagem para o Google e Bing e testes que os dados coletados parecem mais ou menos bem.
python -m pytest Tests/functional_tests.py::GoogleScraperMinimalFunctionalTestCase
O GooglesCraper analisa os resultados do mecanismo de pesquisa do Google (e muitos outros mecanismos de pesquisa _ ) facilmente e de maneira rápida. Ele permite extrair todos os links encontrados e seus títulos e descrições programaticamente, o que permite processar ainda mais dados raspados.
Existem cenários de uso ilimitados:
Antes de tudo, você precisa entender que o GooglesCraper usa duas abordagens de raspagem completamente diferentes :
urllib.request ou requests módulos. Isso simula os pacotes HTTP enviados por navegadores reais.Enquanto a abordagem anterior foi implementada primeiro, a abordagem posterior parece muito mais promissora em comparação, porque os mecanismos de pesquisa não têm uma maneira fácil de detectá -la.
O GooglesCraper é implementado com as seguintes técnicas/software:
Atualmente, os seguintes mecanismos de pesquisa são suportados:
A raspagem é um assunto crítico e altamente complexo. O Google e outros gigantes do mecanismo de pesquisa têm uma forte inclinação para tornar os raspadores a vida o mais difícil possível. Existem várias maneiras de os provedores de mecanismos de pesquisa detectarem que um robô está usando seu mecanismo de pesquisa:
Portanto, o maior obstáculo a enfrentar são os algoritmos de detecção de JavaScript. Não sei o que o Google faz em seu JavaScript, mas em breve o investigarei ainda mais e decidirei se não é melhor alterar estratégias e mudar para uma abordagem que raspa simulando os navegadores em um ambiente de navegador que pode executar o JavaScript. A rede de cada um desses navegadores virtuais é proxificada e manipulada de modo que se comporta como um agente de usuário físico real. Tenho certeza de que deve ser possível lidar com 20 sessões de navegador de maneira paralela, sem enfatizar muito os recursos. O verdadeiro problema é como sempre a falta de bons proxies ...
Como mencionado acima, existem várias desvantagens ao raspar com urllib.request ou requests módulos e fazer a rede por conta própria:
Os navegadores são sistemas de software enormemente complexos. O Chrome possui cerca de 8 milhões de linha de código e Firefox até 10 loc. Empresas enormes investem muito dinheiro para impulsionar a tecnologia (HTML5, CSS3, novos padrões) e cada navegador tem um comportamento único. Portanto, é quase impossível simular esse navegador manualmente com solicitações HTTP. Isso significa que o Google tem inúmeras maneiras de detectar anomalias e inconsistências no uso de navegação. Sozinho, a natureza dinâmica do JavaScript torna impossível raspar sem detectar.
Isso chora por uma abordagem alternativa, que automatiza um navegador real com Python. O melhor seria controlar o navegador Chrome, pois o Google tem os menos incentivos para restringir os recursos para seu próprio navegador nativo. Portanto, preciso de uma maneira de automatizar o Chrome com o Python e controlar várias instâncias independentes com diferentes proxies. Em seguida, a saída do resultado cresce linearmente com o número de proxies usados ...
Algumas tecnologias/software interessantes para fazer isso:
Provavelmente, a melhor maneira de usar o GooglesCraper é usá -lo na linha de comando e disparar um comando como o seguinte:
GoogleScraper --keyword-file /tmp/keywords --search-engine bing --num-pages-for-keyword 3 --scrape-method selenium
Aqui o SEL marca o modo de raspagem como 'selênio'. Isso significa que o GooglesCraper.py arranhões com navegadores reais. Isso é bastante poderoso, já que você pode raspar longos e muitos sites (o Google tem dificuldade em bloquear navegadores reais). O argumento da bandeira --keyword-file deve ser um arquivo com palavras-chave separadas pelo NewLines. Então: para cada linha do Google, consulte uma linha. Fácil, não é?
Além disso, a opção --num-pages-for-keyword significa que o GooglesCraper buscará 3 páginas consecutivas para cada palavra-chave.
Exemplo de arquivo de palavras-chave:
keyword number one
how to become a good rapper
inurl:"index.php?sl=43"
filetype:.cfg
allintext:"You have a Mysql Error in your"
intitle:"admin config"
Best brothels in atlanta
Após a raspagem, você terá automaticamente um novo banco de dados SQLITE3 no nome nomeado google_scraper.db no mesmo diretório. Você pode abrir e inspecionar o banco de dados com o comando:
GoogleScraper --shell
Não deve ser um problema raspar 10.000 palavras -chave em 2 horas . Se você é realmente louco, defina os navegadores máximos na configuração um pouco mais alta (na parte superior do arquivo de script).
Se você quiser, você pode especificar o sinalizador --proxy-file . Como argumento, você precisa passar um arquivo com proxies nele e com o seguinte formato:
protocol proxyhost:proxyport username:password
(...)
Exemplo:
socks5 127.0.0.1:1080 blabla:12345
socks4 77.66.55.44:9999 elite:js@fkVA3(Va3)
Caso você queira usar o GooglesCraper.py no modo HTTP (o que significa que os cabeçalhos HTTP crus são enviados), use -o da seguinte forma:
GoogleScraper -m http -p 1 -n 25 -q "white light"
Se você quiser entrar em contato comigo, faça -o e envie -me um e -mail. Você pode encontrar minhas informações de contato no meu blog.