首页 > 技术文章 > scrapy 使用 在Linux上离线安装firefox及驱动并指定驱动和浏览器路径

yoyowin 2019-12-09 18:46 原文

Linux刚安装好的时候,默认是火狐浏览器并且版本比较低,我的系统是CentOS,火狐版本号很低,用yum安装的话版本也不是最新,只要从官方网站下载最新版安装就可以了,方法如下:首先去火狐主页,中文是http://www.firefox.com.cn/,点击"免费下载"

 

先来查看fire是否安装以及安装的版本号,如果已经安装,执行命令:

rpm -qa |grep firefox 

卸载firerfox原来的版本。,则执行命令

rpm -e firefox 

将我们下载好的安装包Firefox-latest.tar.bz2,然后我们进行解压释放安装包:

#解压bz2文件需要bzip2包,先安装bzip2包,再进行解压
yum -y install bzip2
tar -xjvf Firefox-latest-x86_64.tar.bz2 -C /usr/local/

 

进入新解压的firefox目录

cd /usr/local/firefox

创建软连接

ln -s /usr/local/firefox/firefox /usr/local/bin

 安装firefox驱动 geckodriver-v0.26.0-linux64.tar.gz , 下载地址:https://github.com/mozilla/geckodriver/releases/ ,下载的时候需要与firefox版本匹配

mkdir -p firefoxbrowser/driver
cd firefoxbrowser
#上传两个文件到这个目录
Firefox-latest-x86_64.tar.bz2
geckodriver-v0.26.0-linux64.tar.gz
# 解压
tar -xjvf Firefox-latest-x86_64.tar.bz2 -C ./
tar -xzf geckodriver-v0.26.0-linux64.tar.gz -C ./driver/

在用selenium做爬虫的时候,需要用到无头浏览器,phantomJS已经成为历史,可以使用chrome或firefox的无头模式。但是在实际应用中由于本人在linux中只有普通用户权限,所以需要自己安装firefox和驱动,并在爬虫程序中指定自定义的目录。

以上自定义的目录selenium不会自动识别,除非firefox是用yum安装,而驱动解压后的geckodriver 文件放在/usr/local/bin下。 所以我们需要在代码中指定浏览器和驱动的具体地址:

 # 在初始化页面对象时,创建driver# 使用火狐浏览器
        option = webdriver.FirefoxOptions()
        # 使用谷歌浏览器
        # option = webdriver.ChromeOptions()
        # root用户也可以启动
        option.add_argument("--no-sandbox")
        option.add_argument("--headless")

        # 指定firefox浏览器地址,win环境
        option.binary_location = r'C:\Program Files\Mozilla Firefox\firefox.exe'
        # 指定firefox浏览器地址,linux环境
        # option.binary_location = r'/home/lzq/driver/firefox/main/firefox/firefox'
        # option.headless = True

        # 使用火狐浏览器 win环境,可以不指定驱动地址
        # self.driver = webdriver.Firefox(options=option)
        self.driver = webdriver.Firefox(options=option, executable_path="C:\Log\geckodriver.exe")
     # 指定驱动地址,linux环境# self.driver = webdriver.Firefox(options=option, executable_path="/home/lzq/driver/firefox/dr/geckodriver")
        # 指定驱动地址,win地址

 

以上代码在linux运行的时候遇到了报错,错误原因是在linux中的目录地址必须是用 ‘/’ ,而我用了 ‘\’  ,导致 报错:需要对 \home\lzq\driver\firefox\dr\geckodriver 设定一个path。当报需要一个PATH时,可以把driver放本文件的同级目录下也行。

通过以上在代码中的指定,具体是参数指定。则安装的浏览器和驱动可以放在任意目录,而不考虑root权限安装的问题。

 

推荐阅读