Selenium安裝配置FireFox瀏覽器
前置需求:
1. 下載安裝FireFox瀏覽器和Geckodriver
如果本地已經有FireFox此步驟可以省略
注意:Geckodriver是必下載項,如果項目中沒有geckodriver會提示 no geckodriver
1.1 Windows下載
- 1.1.1 進入FireFox官網直接下載最新版本FireFox
- 1.1.2 直接運行安裝包安裝瀏覽器即可
- 1.1.3 FireFox的默認安裝路徑在C盤的programs file/Mozilla FireFox文件夾中,複製路徑,後面會用到
- 1.1.4 查看FireFox版本並下載對應版本的geckodriver
1.2 Linux下載
Linux的FireFox直接是可執行二進制文件,所以可以直接在服務器上解壓運行。
- 1.2.1 Linux直接通過指令下載(
這裏下載的是FireFox 73.0.1如果想要下載最新版本,可以去官網自行下載
FireFox官網)
wget https://download-installer.cdn.mozilla.net/pub/firefox/releases/73.0.1/linux-x86_64/zh-CN/firefox-73.0.1.tar.bz2
- 1.2.2 下載後解壓即可使用
mkdir ~/FireFox
!tar -xjvf firefox-73.0.1.tar.bz2 -C ~/FireFox
- 下載對應的geckodriver版本。(
firefox版本爲73對應geckodriver版本爲0.26
)
wget https://github.com/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-linux64.tar.gz
如果是自行下載的firefox版本,請自行到GitHub中查找對應的geckodriver下載
- github geckodriver
- 解壓geckodriver到項目的根目錄,即調用selenium的python文件的同級目錄。
tar -zxvf /geckodriver-v0.26.0-linux64.tar.gz -C [你的路徑]
2. 使用Selenium調用FireFox瀏覽器
2.1 創建webdriver的FireFox對象
- 如果沒裝selenium請先安裝
pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple
- 導入selenium模塊
from selenium import webdriver
from selenium.common import exceptions # selenium異常模塊
- 設置無頁面啓動瀏覽器
如果想要顯示firefox頁面,這兩句可以註釋掉
# selenium對firefox的支持組件操作由webdriver中的FirefoxOptions實現
# 如果時Chrome瀏覽器則使用webdriver.ChromeOptions()
# edge沒有option!!
options = webdriver.FirefoxOptions()
options.add_argument('--headless')
- 創建webdriver的firefox對象
executable_path和firefox_binary都必須是絕對路徑!!!
browser_driver = webdriver.Firefox(
executable_path=r"geckodriver執行文件的絕對路徑", # 這裏必須要是絕對路徑
# windows是.exe文件 xxx/xxx/geckodriver.exe, xxx/xxx/firefox.exe
# linux直接是xxx/xxx/geckodriver, xxx/xxx/firefox
firefox_binary=r"firefox執行文件的絕對路徑",
options=options)
這裏通過閱讀Firfox源代碼可以看出,如果將geckodriver放在項目根目錄中,則可以不用填寫executable_path,並且在執行webdriver的時候selenium會自動在項目更目錄中創建geckodriver.log,如果是已經將firefox寫入系統環境變量的話firefox_binary可以不用填寫。
2.2 爬取網頁url
- 調用get方法,返回html頁面內容
url = r'https://www.baidu.com/
browser_driver.get(url)
print ('當前爬取的網頁url爲:{0}'.format(browser_driver.current_url))
print ('當前爬取網頁內容爲:\n {0}'.format(browser_driver.page_source))
千萬記得一定要退出!!!
browser_driver.quit()
2.3 完整代碼
from selenium import webdriver
from selenium.common import exceptions # selenium異常模塊
def browser_crawler(url):
options = webdriver.FirefoxOptions()
options.add_argument('--headless')
browser_driver = webdriver.Firefox(
executable_path=r"geckodriver執行文件的絕對路徑", # 這裏必須要是絕對路徑
# windows是.exe文件 xxx/xxx/geckodriver.exe, xxx/xxx/firefox.exe
# linux直接是xxx/xxx/geckodriver, xxx/xxx/firefox
firefox_binary=r"firefox執行文件的絕對路徑",
options=options)
try:
url = r'https://www.baidu.com/
browser_driver.get(url)
print ('當前爬取的網頁url爲:{0}'.format(browser_driver.current_url))
print ('當前爬取網頁內容爲:\n {0}'.format(browser_driver.page_source))
finally:
# 無論有沒有異常,都會執行退出語句
browser_driver.quit()
if __name__ == '__main__':
url = r'https://www.baidu.com'
browser_crawler(url)