Python爬蟲——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)

參考文獻

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章