- 爬蟲終結者 Chrome Headless
- 簡介
- 安裝
- Chrome Headless 配置
- 相關庫安裝
- 實戰
- 知乎自動化爬蟲
- 法治線上自動翻頁爬蟲
- 豆瓣模拟登陸爬蟲
- 核心代碼簡介
- 總結
- 相關資料
爬蟲終結者 Chrome Headless
簡介
- 自從Google官方釋出了Chrome浏覽器的無形态模式之後,
維護者 Vitaly Slobodin 随即在郵件清單上宣布辭職,可見該模式的影響力,那麼下面小編帶大家快速入門如何使用該技術實作資料抓取,可以說掌握這套技術能夠應對PhantomJS
的網站,從此爬蟲0門檻。90%
安裝
Chrome Headless 配置
- 打開chrome浏覽器,位址欄輸入
,需要版本chrome://version/
以上59.0
- Mac配置如下(
):vim ~/.bashrc
alias chrome="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome"
alias chrome-canary="/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary"
alias chromium="/Applications/Chromium.app/Contents/MacOS/Chromium"
alias start_chrome_server="chrome --disable-gpu --remote-debugging-port=9222"
- 配置完成後記得
$ source ~/.bashrc
- 在終端運作
,可以看到如下圖所示,且有一個$ start_chrome_server
:新的浏覽器打開
- ps. 如果按照上面沒有操作成功或者其他系統配置,可以看這裡
相關庫安裝
-
$ sudo pip install pychrome
- 下載下傳chrome headless spider 源碼 (ps.
)如果有基礎的直接看源碼即可
- 或者
$ git clone https://github.com/MrPaoBrother/headless_spider.git
實戰
ps. 因為所有的操作都是模拟浏覽器進行操作,是以運作前必須先打開chrome headless:
$ start_chrome_server
知乎自動化爬蟲
- 上面源碼下載下傳好了之後,在根目錄下運作:
$ python run_zhihu.py
- 運作成功後可以看到知乎網站在不停的下滑重新整理,直到最後一頁。
- 結果:
法治線上自動翻頁爬蟲
- 上面源碼下載下傳好了之後,在根目錄下運作:
$ python run_fazhizaixian.py
- 運作成功後可以看到頁面會自動翻頁且會在最後一頁停住,完全自動化。
- 結果:
豆瓣模拟登陸爬蟲
- 上面源碼下載下傳好了之後,在源碼中填入自己的
用于模拟登陸:豆瓣賬号
- 之後在根目錄運作
$ python run_douban.py
- 有些時候需要驗證碼,注意控制台需要填寫
這裡按照自己看到的填就行:code:
- 成功的話,我們可以看到幾秒之後浏覽器自動進入豆瓣電影頁面進行自動翻頁爬蟲了。
- 結果:
核心代碼簡介
- 下載下傳頁面
def download_html(self, url=None, delay=, tab=None, disable_css=False, close_tab=True):
"""
傳回一個頁面的html
:param tab: 頁面對象,預設為空,自己會自動建立一個
:param url: 傳入的url
:param delay: 下載下傳延遲
:param disable_css: 是否禁止CSS
:param close_tab: 每次爬完是否關閉tab
:return:
"""
try:
if tab is None:
tab = self.create_new_tab(url=url)
self.start_tab(tab)
tab.wait(timeout=delay)
html = self.exec_js_cmd(tab, js_cmd.DOWNLOAD_HTML)
if disable_css:
self.disable_css(tab=tab)
if html is not None:
html = html["result"]["value"]
if close_tab:
self.close_tab(tab)
return html
except Exception as e:
print "download_html error:", e
self.close_tab(tab)
return None
- 該函數是整個架構的核心函數,爬蟲的
也就是将浏覽器上看到的使用者資訊抓取下來,其中我這裡隻給出了一部分功能即核心
(控制下載下傳延遲),delay
(下載下傳時候是否需要css資源),disable_css
(每次抓取後是否關閉網頁),源碼中 還封裝了很多其他功能,讀者可以自行挖掘,理論上來說隻要你能在浏覽器上看到的東西基本都能抓下來,就是控制close_tab
這個參數就行。delay
總結
- 該技術通常用來擷取一些
網站的方法,對一般的資料加密
抓取成本較高,因為在時間上相對來說靜态網站
一些,大家可以試着用該架構爬下淘寶,京東等網站,小編有測試過,也是沒什麼問題的,最後希望大家給我點個慢
或者在項目中給個贊
!star
相關資料
- Chrome Headless配置
- Google 開發者協定文檔
- pychrome源碼