1. 程式人生 > >爬蟲使用無頭瀏覽器

爬蟲使用無頭瀏覽器

quit smo 內核 res -c idt align centos6 pytho


python + selenium + webdriver

chrome ff opera等瀏覽器都有webdriver提供。

可惜還是依賴selenium

以下以chrome為例。

1 centos7上安裝chrome

centos6.5不支持。已無法安裝現在的chrome

win10可以用。所以本地調試沒有問題。

1. 配置yum

在目錄 /etc/yum.repos.d/ 下新建文件 google-chrome.repo

#vim /ect/yum.repos.d/google-chrome.repo

寫入如下內容:

[google-chrome]

name=google-chrome

baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch

enabled=1

gpgcheck=1

gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub

保存並退出:

1

2

1.按 ESC 退出編輯模式(回到命令模式)

2.輸入 :wq! 保存並退出

2.安裝google chrome瀏覽器

Google官方源安裝:

1

#yum -y install google-chrome-stable

Google官方源可能在中國無法使用,導致安裝失敗或者在國內無法更新,可以添加以下參數來安裝:  

1

#yum -y install google-chrome-stable --nogpgcheck

2 下載chromedriver

版本間並不兼容

3 python 下簡單使用

from selenium import webdriver

#不指定路徑會在環境變量裏找

driver = webdriver.Chrome(‘/path/to/chromedriver‘)

driver.get(‘http://www.google.com/xhtml‘);

search_box = driver.find_element_by_name(‘q‘)

search_box.send_keys(‘ChromeDriver‘)

search_box.submit()

search_bot.get_attribute("outerHTML")

#窗口關閉

driver.quit()

4 無頭模式

from selenium.webdriver.chrome.options import Options

chrome_options = Options()

chrome_options.add_argument(‘--headless‘)

driver = webdriver.Chrome(chrome_options=chrome_options,executable_path=‘D:\Program Files\chromedriver\chromedriver.exe‘)

centos7使用中的問題

安裝chromevirtualbox的增強功能後無法再進入用戶登錄頁面

網上說是GNOME的兼容性問題,進入終端yum upgrade後才能進。所用版本更新了大概1G,內核也升級了

註意需要切換到一個非root用戶才能使用chromedriver,原因可能是chrome的啟動策略要求非root用戶,但是從打印的異常裏是看不到這個原因的。。。

網上說到的其他可能是chromedriverchrome的版本對應關系

5 如何和pyspider對接

1 直接嵌入pyspider

2 python或者java啟動一個獨立的程序,提供rpc調用或者restapi

後者比較類似目前phantomjs的使用形式。

考慮並發性能,用springboot搭建,通過restapi訪問,維持一個webdriver

池提供服務。

nodejs + puppeteer

谷歌官方提供的node庫,通過devtools協議控制

1 安裝

npm i puppeteer

安裝自帶chromium,由於墻的原因可能下載失敗

爬蟲使用無頭瀏覽器