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)

参考文献

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