- 概述
使用selenium爬取網(wǎng)頁數(shù)據(jù)甲献,運行平臺是centos7醒第,除安裝selenium外谜酒,必須做一些環(huán)境配置。
1. 安裝
pip install selenium
2. 安裝google-chrome
首先下載安裝包
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
然后使用yum安裝剛下載的安裝包
yum install google-chrome-stable_current_x86_64.rpm
安裝之后谚鄙,會顯示當前安裝的版本嚷往,如圖
可以看到我的版本是 90.0.4430.212-1博杖,后面的.212-1不用理會
linux(centos)查看chrome版本號
google-chrome --version
3. 安裝對應(yīng)版本的chromedriver (必須與google-chrome版本對應(yīng))
進入 https://chromedriver.chromium.org/downloads (需要翻墻,如不能翻墻氛赐,請尋找國內(nèi)鏡像)選擇 對應(yīng)的版本魂爪,或者使用https://chromedriver.storage.googleapis.com/index.html,如下圖
點擊后艰管,進入下一個頁面滓侍,選擇linux版本,并右鍵復(fù)制地址
wget https://chromedriver.storage.googleapis.com/90.0.4430.24/chromedriver_linux64.zip
下載完成后牲芋,解壓
將 chromedriver添加到環(huán)境變量即可撩笆,由于我得目錄是 /envConfig, 所以在/etc/profile末尾添加
#添加chromedriver
export PATH=$PATH:/envConfig/
即可。也可將其移動到/usr/bin目錄下
mv chromedriver /usr/bin
4. 驗證
隨后進入 python 環(huán)境
實驗一
from selenium import webdriver, common
url = 'https://chromedriver.chromium.org/downloads'
# 使用headless無界面瀏覽器模式
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--headless') #//增加無界面選項
chrome_options.add_argument('--disable-gpu') #//如果不加這個選項缸浦,有時定位會出現(xiàn)問題
browser = webdriver.Chrome(chrome_options=chrome_options)
browser.get(url)
實驗二:
from selenium import webdriver, common
url = 'http://www.nmc.cn/publish/typhoon/typhoon_new.html'
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--headless')
browser = webdriver.Chrome(chrome_options=chrome_options)
browser.get(url)
print(browser.page_source)
browser.quit()
5. docker 運行 selenium 報錯
5.1 文件權(quán)限問題
WebDriverException: Message: ‘chromedriver‘ executable may have wrong permissions.
出現(xiàn)這種問題夕冲,一般四種情況
- 1、沒裝chromedriver
版本號一定要對應(yīng)上裂逐,查看一下你的chrome版本歹鱼,對應(yīng)好 - 2、沒有執(zhí)行權(quán)限
大多數(shù)人如果是做項目的話卜高,爬蟲一般都在服務(wù)器上醉冤,本地上傳的時候沒給權(quán)限
ls -l
這里賦予可執(zhí)行權(quán)限
chmod -R 777 chromedriver
5.2 環(huán)境配置問題
報錯:
docker Message: 'chromedriver' executable needs to be in PATH.
以前配置時秩霍,chromedriver將放入到/envConfig 內(nèi),然后通過配置文件配置蚁阳,可行;但是在docker 內(nèi)同樣的配置出錯鸽照。
后來將 chromedriver 放入到 /usr/bin/ 下
成功解決螺捐。
5.3 裝了Chrome 后,yum 無法安裝安裝包啦
安裝Chrome 后矮燎,yum install unzip 都報錯:
failure: repodata/primary.xml.gz from google-chrome: [Errno 256] No more mirrors to try.
解決方法:
需要到/etc/yum.repos.d目錄下,找到chrome的repo,也就是google-chrome.repo, 刪除掉或者mv到別的地方,然后yum clean all定血, 就能解決。
主要是因為這個chrome的源沒法用
cd /etc/yum.repos.d
rm -rf google-chrome.repo
yum clean all