GooglesCraper是一种开源工具,将来将仍然是开源工具。
这也是GooglesCraper的现代继任者,即通用爬行基础设施,将仍然是开源和免费的。
但是,有些人希望快速拥有一项服务,使他们可以从Google或任何其他搜索引擎中刮擦一些数据。因此,我创建了Web Service scrapeolucous.com。
上一个州: 2019年2月
可以在此处找到GooglesCraper的继任者
这意味着我将不再维护这个项目。上述项目的所有新开发都将进行。
我不会继续为这个项目付出太多努力的原因有很多。
因此,我将继续开发一个名为https://www.npmjs.com/package/se-scraper的刮擦库,该库在JavaScript中,该库在Puppeteer上运行。
您可以在此处下载该应用程序:https://www.npmjs.com/package/se-scraper
它支持各种不同的搜索引擎,并且比GooglesCraper更有效。无需线程/排队和复杂的记录功能,代码库也不太复杂。
出于疑问,您可以在我的Wegpage上与我联系,并在那里给我写一封电子邮件。
经过两年的遗弃,该项目将重新生活。在接下来的几周中,我将花一些时间将所有功能更新为最新的发展。这涵盖了更新所有的REGEXES和搜索引擎行为的变化。几周后,您可以期望该项目能像这里记录的那样再次工作。
GooglesCraper写在Python 3中。您应该至少安装Python 3.6。最后一个重大发展是用Python 3.7完成的。因此,使用Ubuntu 16.04和Python 3.7时,请从官方包装中安装Python 3。我使用的是Anaconda Python发行版,对我来说确实非常有效。
此外,您需要安装Chrome浏览器和Selenium模式的Chromedriver。或者,将Firefox浏览器和Geckodriver安装为硒模式。请参阅下面的说明。
您也可以使用PIP舒适地安装GooglesCraper:
virtualenv --python python3 env
source env/bin/activate
pip install GoogleScraper
现在(2018年9月)灰心。请从最新的GitHub来源安装。
有时,最新,最令人敬畏的东西在芝士店中不可用(这就是他们称为https://pypi.python.org/pypi/pip)的方式。因此,您可能想从该GitHub存储库中的最新来源中安装GooglesCraper。您可以这样做:
virtualenv --python python3 env
source env/bin/activate
pip install git+git://github.com/NikolaiT/GoogleScraper/
请注意,某些功能和示例可能无法正常工作。我也不保证该应用程序甚至可以运行。我只保证(至少在一定程度上)从PIP安装将产生可用版本。
从此处下载最新的Chromedriver:https://sites.google.com/a/chromium.org/chromedriver/downloads
解开驱动程序并将其保存在某个地方,然后在GooglesCraper配置文件中更新chromedriver_path scrape_config.py到保存驱动程序chromedriver_path = 'Drivers/chromedriver'路径
从这里下载最新的geckodriver:https://github.com/mozilla/geckodriver/releases
解开驱动程序并将其保存在某个地方,然后在googlescraper配置文件中更新geckodriver_path scrape_config.py到保存驱动程序geckodriver_path = 'Drivers/geckodriver'路径
将以下设置更新为GooglesCraper配置文件scrape_config.py将以下设置更新为您的值。
# 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'
如上所述安装。如果您想在硒模式下使用GoogleScraper,请确保拥有Chrome/Firefox的Selenium驱动程序。
查看所有选项
GoogleScraper -h
用HTTP模式刮擦单个关键字“ Apple”:
GoogleScraper -m http --keyword "apple" -v info
使用Chrome以无头模式以Chrome在Selenium模式下搜索文件SearchData/5words中的所有关键字:
GoogleScraper -m selenium --sel-browser chrome --browser-mode headless --keyword-file SearchData/5words -v info
刮擦所有关键字
GoogleScraper -m http --keyword-file SearchData/some_words.txt --num-workers 5 --search-engines "bing,yahoo" --output-filename threaded-results.json -v debug
在Google上查找关键字“ K2 Mountain”的图像搜索:
GoogleScraper -s "google" -q "K2 mountain" -t image -v info
这可能是Googlescraper最棒的功能。如果这两个
异步模式的示例:
在Bing和Yahoo上的关键字文件searchdata/Marketing-Models-brands.txt中搜索关键字。默认情况下,异步模式同时产生100个请求。这意味着每秒大约100个请求(取决于实际连接...)。
GoogleScraper -s "bing,yahoo" --keyword-file SearchData/marketing-models-brands.txt -m http-async -v info -o marketing.json
结果(部分结果,因为一个IP地址的关键字太多)可以在文件输出/Marketing.json中检查。
GooglesCraper非常复杂。由于GooglesCraper支持许多搜索引擎,并且这些搜索提供商的HTML和JavaScript经常更改,因此GooglesCraper通常会停止使用某些搜索引擎。要发现这一点,您可以运行功能测试。
例如,下面的测试为Google和Bing进行了刮擦会话,并测试收集的数据看起来或多或少可以。
python -m pytest Tests/functional_tests.py::GoogleScraperMinimalFunctionalTestCase
GooglesCraper解析Google搜索引擎结果(以及许多其他搜索引擎_ ),以快速而快速的方式。它允许您以编程方式提取所有找到的链接及其标题和描述,从而使您能够进一步处理刮擦数据。
有无限的用法场景:
首先,您需要了解Googlescraper使用两种完全不同的刮擦方法:
urllib.request或requests模块)刮擦。这模拟了由真实浏览器发送的HTTP数据包。前者首先实施了前者的方法,但相比之下,后来的方法看起来更加有前途,因为搜索引擎对检测它没有任何简单的方法。
使用以下技术/软件实现GooglesCraper:
目前,支持以下搜索引擎:
刮擦是一个关键且高度复杂的主题。 Google和其他搜索引擎巨头具有强烈的倾向,可以尽可能地使刮擦寿命。搜索引擎提供商有几种方法可以检测机器人正在使用其搜索引擎:
因此,解决的最大障碍是JavaScript检测算法。我不知道Google在他们的JavaScript中做什么,但是我很快将进一步调查它,然后决定通过在浏览器的环境中模拟浏览器来更改策略并切换到可以执行JavaScript的浏览器来刮擦的方法。这些虚拟浏览器中的每一个的网络被定位和操纵,使其的行为就像真实的物理用户代理。我很确定必须以平行方式处理20个这样的浏览器会话,而不会过多地压力资源。真正的问题一如既往地缺乏良好的代理人...
如上所述,在用urllib.request或requests模块并自行进行网络时,有几个缺点:
浏览器是非常复杂的软件系统。 Chrome拥有约800万行的代码,甚至10个LOC。大公司投入了大量资金来推动技术前进(HTML5,CSS3,新标准),每个浏览器都有独特的行为。因此,使用HTTP请求手动模拟此类浏览器几乎是不可能的。这意味着Google有许多方法可以检测浏览使用中的异常和不一致。孤独的JavaScript的动态性质使得无法刮擦未被发现。
这种呼声呼吁另一种方法,可以自动使用Python进行真正的浏览器。最好的是控制Chrome浏览器,因为Google的激励措施最少限制其本地浏览器的功能。因此,我需要一种与Python自动化Chrome的方法,并控制了具有不同代理设置的几个独立实例。然后,结果的输出随二手代理的数量线性增长...
一些有趣的技术/软件可以这样做:
使用GooglesCraper的最佳方法可能是从命令行中使用它,并触发以下命令:
GoogleScraper --keyword-file /tmp/keywords --search-engine bing --num-pages-for-keyword 3 --scrape-method selenium
在这里, SEL将刮擦模式标记为“硒”。这意味着用真正的浏览器刮擦GoogleCraper.py。这是非常强大的,因为您可以刮去很长时间和许多站点(Google很难阻止真正的浏览器)。 flag --keyword-file的参数必须是一个由新线隔开的关键字的文件。因此:对于每个Google查询一行。容易,不是吗?
此外,该选项--num-pages-for-keyword表示GooglesCraper将为每个关键字连续3个页面。
示例关键字文件:
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
刮擦之后,您将在同一目录中的名为google_scraper.db中自动拥有一个新的sqlite3数据库。您可以使用命令打开并检查数据库:
GoogleScraper --shell
在2小时内刮擦10'000个关键字不是问题。如果您真的很疯狂,请在配置中设置最大浏览器(在脚本文件的顶部)。
如果需要,可以指定标志--proxy-file 。作为参数,您需要传递带有代理和以下格式的文件:
protocol proxyhost:proxyport username:password
(...)
例子:
socks5 127.0.0.1:1080 blabla:12345
socks4 77.66.55.44:9999 elite:js@fkVA3(Va3)
如果您想在http模式下使用googlescraper.py(这意味着发送RAW HTTP标头),请使用如下:
GoogleScraper -m http -p 1 -n 25 -q "white light"
如果您想与我联系,请这样做,然后给我发送一封邮件。您可以在我的博客上找到我的联系信息。