爬蟲使用無頭瀏覽器
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使用中的問題
安裝chrome和virtualbox的增強功能後無法再進入用戶登錄頁面
網上說是GNOME的兼容性問題,進入終端yum upgrade後才能進。所用版本更新了大概1G,內核也升級了
註意需要切換到一個非root用戶才能使用chromedriver,原因可能是chrome的啟動策略要求非root用戶,但是從打印的異常裏是看不到這個原因的。。。
網上說到的其他可能是chromedriver和chrome的版本對應關系
5 如何和pyspider對接
1 直接嵌入pyspider
2 用python或者java啟動一個獨立的程序,提供rpc調用或者restapi
後者比較類似目前phantomjs的使用形式。
考慮並發性能,用springboot搭建,通過restapi訪問,維持一個webdriver
池提供服務。
nodejs + puppeteer
谷歌官方提供的node庫,通過devtools協議控制
1 安裝
npm i puppeteer
安裝自帶chromium,由於墻的原因可能下載失敗
爬蟲使用無頭瀏覽器