1. 系統(tǒng):centos 7.x? 暮现,python:3.6.3
2.下載驅(qū)動(dòng)
wget https://github.com/mozilla/geckodriver/releases/download/v0.19.1/geckodriver-v0.19.1-linux64.tar.gz
tar -zxvf geckodriver-v0.19.1-linux64.tar.gz
ln -s 路徑/geckodriver /usr/bin/geckodriver
3.下載firefox
wget https://ftp.mozilla.org/pub/firefox/releases/56.0.2/linux-x86_64/en-US/firefox-56.0.2.tar.bz2
tar xjvf firefox-56.0.2.tar.bz2? ? ? ? # need yum install?bzip2
ln -s 路徑/firefox/firefox /usr/bin/firefox
4.安裝selenium
wget https://files.pythonhosted.org/packages/14/d6/650f5d2e149b83cd24989653efedf47a24cafb72e9d2dd03191a9f52f2f4/selenium-3.8.1-py2.py3-none-any.whl
pip3 install selenium-3.8.1-py2.py3-none-any.whl
5.安裝運(yùn)行依賴
yum install gtk3 gtk3-devel
yum install Xvfb libXfont xorg-x11-fonts*
pip3 install pyvirtualdisplay
6.測(cè)試
#!/usr/bin/python3
# -*- coding:utf-8 -*-
from selenium import webdriver
from pyvirtualdisplay import Display
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
display = Display(visible=0, size=(800,600))
display.start()
binary = FirefoxBinary('路徑/firefox/firefox')
driver = webdriver.Firefox(firefox_binary=binary)
driver.get('https://www.baidu.com')
print(driver.title)
driver.quit()
display.stop()
tag:
1. 若是*driver訪問(wèn)python目錄下可以在代碼中省略掉路徑性誉;切記版本問(wèn)題豆巨。
2. 同理chrome + chromedriver 操作流程也一樣:
先安裝:yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
下載驅(qū)動(dòng):wget?http://cdn.npm.taobao.org/dist/chromedriver/72.0.3626.7/chromedriver_linux64.zip
賦權(quán)限:chmod +x chromedriver
測(cè)試代碼:
滴滴尸闸,學(xué)生卡烤蜕。
======遇到的問(wèn)題
1.?OSError: [Errno 40] Too many levels of symbolic links: 'geckodriver'
解決:在建立軟鏈接時(shí)蚕断,要使用絕對(duì)路徑眨攘,或者在py文件中直接使用絕對(duì)路徑
2.selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities
解決:看一些資料解釋版本不對(duì)應(yīng)主慰,我的解決辦法是通過(guò)yum install gtk3 gtk3-devel
yum install Xvfb libXfont xorg-x11-fonts*
pip3 install pyvirtualdisplay
3.selenium.common.exceptions.WebDriverException: Message: Process unexpectedly closed with status: 1
解決:from selenium.webdriver import FirefoxOptions
opts = FirefoxOptions()
opts.add_argument("--headless")
browser = webdriver.Firefox(firefox_options=opts)
======DEMO