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)