zoukankan      html  css  js  c++  java
  • pyppeteer离线环境配置

    windows下的安装和配置

    • 1、使用豆瓣源安装pyppeteer:
    pip install -i https://pypi.douban.com/simple/ pyppeteer
    • 2、添加环境变量,更改下载 chromium 的来源网站和执行路径:

    pyppeteer第一次运行时,会自动下载chromium浏览器,时间可能会有些长。不过,我第一次运行时,直接报错:

    [W:pyppeteer.chromium_downloader] start chromium download.
    Download may take a few minutes.

    可以看到,下载功能是由pyppeteer.chromium_downloader模块完成的,那么我们进入这个模块查看源码。

    在这个模块源码中,我们可以看到downloadURLs、chromiumExecutable等变量,很明显指的就是下载链接和chromium的可执行文件路径。我们重点关注一下可执行文件路径

    chromiumExecutable:
    chromiumExecutable = {
    'linux': DOWNLOADS_FOLDER / REVISION / 'chrome-linux' / 'chrome',
    'mac': (DOWNLOADS_FOLDER / REVISION / 'chrome-mac' / 'Chromium.app' /
    'Contents' / 'MacOS' / 'Chromium'),
    'win32': DOWNLOADS_FOLDER / REVISION / 'chrome-win32' / 'chrome.exe',
    'win64': DOWNLOADS_FOLDER / REVISION / 'chrome-win32' / 'chrome.exe',
    }

    可见,无论在哪个平台下,chromiumExecutable都是由是4个部分组成,其中 DOWNLOADS_FOLDER 和 REVISION是定义好的变量:

    DOWNLOADS_FOLDER = Path(__pyppeteer_home__) / 'local-chromium'

    进一步查看可以发现:

    __pyppeteer_home__ = os.environ.get('PYPPETEER_HOME', AppDirs('pyppeteer').user_data_dir)
    REVISION = os.environ.get('PYPPETEER_CHROMIUM_REVISION', __chromium_revision__)

    所以,DOWNLOADS_FOLDER 和 REVISION都是读取对应环境变量设置好的值,如果没有设置,就使用默认值。我们来输出一下,看看默认值:复制代码

    import pyppeteer.chromium_downloader
    print('默认版本是:{}'.format(pyppeteer.__chromium_revision__))
    print('可执行文件默认路径:{}'.format(pyppeteer.chromium_downloader.chromiumExecutable.get('win64')))
    print('win64平台下载链接为:{}'.format(pyppeteer.chromium_downloader.downloadURLs.get('win64')))

    输出结果如下:

    1
    2
    3
    默认版本是:575458
    可执行文件默认路径:C:UsersAdministratorAppDataLocalpyppeteerpyppeteerlocal-chromium575458chrome-win32chrome.exe
    win64平台下载链接为:https://storage.googleapis.com/chromium-browser-snapshots/Win_x64/575458/chrome-win32.zip

     在使用上面代码的时候,你可以将win64换成你的平台就好了,有了上面的下载链接,这个时候就可以先开始下载着chromium浏览器(有些慢),然后继续往下看。

    对于版本默认的就好了。但是,对于chromium的可执行文件路径,默认是在C盘,对于有C盘洁癖的我,咋看咋不舒服,那就改了吧。从上面的分析中我们可以知道,C:UsersAdministratorAppDataLocalpyppeteerpyppeteer这一部分读取的是环境变量或者默认值,所以,我们可以通过配置环境变量改这一部分(或者也可以直接改源码,读取环境变量那一行,直接设为固定值),通过os.environ添加PYPPETEER_HOME这一变量值,例如我想把我的chromium放在D盘的Program Files文件夹下:
     
    import os
    os.environ['PYPPETEER_HOME'] = 'D:Program Files'
    import pyppeteer.chromium_downloader
    print('默认版本是:{}'.format(pyppeteer.__chromium_revision__))
    print('可执行文件默认路径:{}'.format(pyppeteer.chromium_downloader.chromiumExecutable.get('win64')))
    print('win64平台下载链接为:{}'.format(pyppeteer.chromium_downloader.downloadURLs.get('win64')))

    输出如下:

    1
    2
    3
    默认版本是:575458
    可执行文件默认路径:D:Program Fileslocal-chromium575458chrome-win32chrome.exe
    win64平台下载链接为:https://storage.googleapis.com/chromium-browser-snapshots/Win_x64/575458/chrome-win32.zip

     特别提醒:上面设置环境变量的那一行,必须在导入pyppeteer这一行上面,否则设置无效。

    上面这种方法你需要在每次使用pypeeteer之前通过这行代码设置一下,实在麻烦,所以,我还是更愿意直接在windows系统里面添加这个变量:

    虽然我们把环境变量设置为D:Program Files,但是层层文件夹之后,才到真正的可执行文件chrome.exe,下载好的压缩包解压后,所有文件都在名为chrome-win的文件夹中,所以,我们需要在D:Program Files创建local-chromium575458这两个文件夹(575458是上面的版本号,记得修改为你的版本号),然后将解压得到的chrome-win文件夹,重命名为chrome-win32,然后直接拷贝进去就好,整个安装过程就完成了。

    变量名为PYPPETEER_DOWNLOAD_HOST,对应值为http://npm.taobao.org/mirrors; 下载链接选改

    • 3、在cmd终端进入 python/ipython 环境,执行以下代码查看:
    import pyppeteer
    
    # chromium执行目录
    pyppeteer.chromium_downloader.chromiumExecutable.get('win64')
    
    # 下载chromium的url地址
    pyppeteer.chromium_downloader.downloadURLs.get('win64')

    配置成功的话,我这边返回的结果如下:

    WindowsPath('D:/Program Files/pyppeteer/local-chromium/588429/chrome-win32/chrome.exe')
    
    http://npm.taobao.org/mirrors/chromium-browser-snapshots/Win_x64/588429/chrome-win32.zip

    至此环境配置是成功了,如果没生效注意重新打开cmd窗口试试。

  • 相关阅读:
    MSDN Magazine搞错了
    Visual Studio 2005中设置调试符号(Debug Symbols)
    BCB 6的问题
    吴裕雄天生自然Spring Boot使用Spring Data JPA实现人与身份证的一对一关系映射
    吴裕雄天生自然Spring BootSpring Data JPA
    吴裕雄天生自然Spring BootSpring Boot对JSP的支持
    吴裕雄天生自然Spring BootSpring Boot的异常统一处理
    吴裕雄天生自然Spring Boot使用Spring Data JPA实现Author与Article的一对多关系映射
    吴裕雄天生自然Spring Boot解决 Error creating bean with name 'entityManagerFactory' defined in class path resource
    吴裕雄天生自然Spring Boot@ExceptionHandler注解和@ControllerAdvice注解
  • 原文地址:https://www.cnblogs.com/feifeifeisir/p/15245679.html
Copyright © 2011-2022 走看看