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"
如果您想與我聯繫,請這樣做,然後給我發送一封郵件。您可以在我的博客上找到我的聯繫信息。