• scrapy 使用 在Linux上离线安装firefox及驱动并指定驱动和浏览器路径


    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权限安装的问题。

  • 相关阅读:
    iOS9--适配系列教程(原文/译文)
    电梯调度设计思路及算法
    10大高频率单词筛选
    html知识点总结
    关于博客
    Java构造器内部的多态方法
    Java初学者必学的六大Java语言要点
    Java中的length字段和length()方法
    Java学习有方法有捷径
    Java 分隔符函数split的使用注意事项
  • 原文地址:https://www.cnblogs.com/yoyowin/p/12012815.html
Copyright © 2020-2023  润新知