来源:https://www.cnblogs.com/xiaoaiyiwan/p/10776493.html 稍作修改

1.第一步,代码如下:

from requests_html import HTMLSession

url="https://www.baidu.com/"

headers={

"Host": "www.baidu.com",

"Upgrade-Insecure-Requests": "1",

"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"

}

session=HTMLSession()

req=session.get(url,headers=headers)

req.encoding="utf-8"

req.html.render()

result=req.html.find("a.mnav",first=True)

print(req.status_code)

print(result.text)

print(result.attrs.get('href'))

2.因为是第一次使用render函数,需要安装chromium,无奈速度太慢,等待几分钟,才2%

因为各种不可知的原因,下载时还有可能报错 我的报错是

urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='storage.googleapis.com', port=443): Max retries exceeded with url: /chromium-browser-snapshots/Win_x64/575458/chrome-win32.zip (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",),))

3.解决步骤如下:

3.1手动下载chromium

https://npm.taobao.org/mirrors/chromium-browser-snapshots/Win_x64/650583/

下载后之后解压。

3.2 requests_html运行chromium的路径究竟是怎么样的?

3.2.1 进入python安装目录下的\Lib\site-packages\pyppeteer目录

笔者的目录是:C:\Users\Ray\AppData\Local\Programs\Python\Python37\Lib\site-packages\pyppeteer

3.2.2 打开chromium_downloader.py文件

找到代码:

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',

}

从上面可以看出,win64(笔者的win10 系统是64位的)的chromium路径是:

DOWNLOADS_FOLDER / REVISION / 'chrome-win32' / 'chrome.exe',

那么,DOWNLOADS_FOLDER 和REVISION究竟是什么?

往上面寻找,可以找到以下代码:

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

REVISION = os.environ.get('PYPPETEER_CHROMIUM_REVISION', chromium_revision)

可以使用print函数打印出两个路径,具体代码如下:

from pyppeteer import chromium_revision, pyppeteer_home

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

REVISION = os.environ.get('PYPPETEER_CHROMIUM_REVISION', chromium_revision)

print(DOWNLOADS_FOLDER)

print(REVISION)

直接运行这个py文件,也可以拷贝部分代码去自己的py文件中运行就可以知道两个变量的路径。

我的代码如下

import os

from pathlib import Path

from pyppeteer import chromium_revision, pyppeteer_home

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

REVISION = os.environ.get('PYPPETEER_CHROMIUM_REVISION', chromium_revision)

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',

}

print(chromiumExecutable['win64'])

这样可以直接找到安装的路径。

由上面可以知道:chromium路径是:C:\Users\Ray\AppData\Local\pyppeteer\pyppeteer\local-chromium\575458\chrome-win32\chrome.exe

所以自己建文件夹,然后一直到chrome-win32文件夹,把上面下载的chromium文件,拷贝到此目录下,下载到的Chromeium是一个压缩包,解压后把全部文件拷贝到路径就可以了。

4.运行第一步的代码,完美打印。

具体灵感来源:https://github.com/GoogleChrome/puppeteer/issues/1597

解决使用requests_html模块,html.render()下载chromium报错、速度慢问题的更多相关文章

  1. 解决Windows下运行php Composer出现SSL报错的问题

    解决Windows下运行php Composer出现SSL报错的问题 2015-01-14 20:05   在windows下运行composer却出现SSL报错: E:\www>php -f  ...

  2. go语言,golang学习笔记3 用命令下载框架报错问题解决 设置环境变量

    go语言,golang学习笔记3 用命令下载框架报错问题解决 设置环境变量 下载安装:go get github.com/astaxie/beego 首页 - beego: 简约 & 强大并存 ...

  3. Python3安装Celery模块后执行Celery命令报错

    1 Python3安装Celery模块后执行Celery命令报错 pip3 install celery # 安装正常,但是执行celery 命令的时候提示没有_ssl模块什么的 手动在Python解 ...

  4. 如何解决spring boot 项目导入依赖后代码报错问题

    如何解决spring boot 项目导入依赖后代码报错问题 2020-08-15  14:17:18 代码截图如图所示(由于本人问题已经解决,没来得及截图,所以在网上找了一张图片)

  5. apt下载open-jdk8报错add-apt-repository: command not found

    今天下载jdk8报错 在Ubuntu下,时不时会有这个错误的. add-apt-repository: command not found sudo apt-get install software- ...

  6. 解决Homestead yarn , npm run dev, 命令报错问题!

    解决Homestead yarn , npm run dev, 命令报错问题! 2018年06月01日 11:50:51 偶尔发发颠 阅读数:1654    版权声明:本文为博主原创,未经博主同意,不 ...

  7. 【EWM系列】SAP EWM模块-修改任何内容都报错

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[EWM系列]SAP EWM模块-修改任何内容都 ...

  8. vue Blob 下载附件报错

    vue Blob 下载附件报错,不妨试试: window.location.href=后台地址

  9. 解决使用requests_html模块,req.html.render()下载chromium速度慢问题

    1.第一步,代码如下: from requests_html import HTMLSession url="https://www.baidu.com/" headers={ & ...

随机推荐

  1. Android入门(创建、编译、运行、打包、安装)

    一.创建Android项目 1.选择Emtpy Activity=>Next 2.配置项目 输入Name(名称) Package.name(包名) Save location(保存位置) Lan ...

  2. 《ASP.NET Core 高性能系列》Span<T>和Memory<T>

    一.Span<T>概述 原文:Provides a type- and memory-safe representation of a contiguous region of arbit ...

  3. python爬虫之字体反爬

    一.什么是字体反爬? 字体反爬就是将关键性数据对应于其他Unicode编码,浏览器使用该页面自带的字体文件加载关键性数据,正常显示,而当我们将数据进行复制粘贴.爬取操作时,使用的还是标准的Unicod ...

  4. Mysql5.7.25安装步骤

    安装步骤 在官网下载mysql-5.7.25-winx64.zip压缩包到本地,解压到非中文目录. 列如(D:\Program Files\mysql-5.7.25-winx64). 在环境变量中添加 ...

  5. 聊聊RabbitMQ那一些事儿之一基础应用

    聊聊RabbitMQ那一些事儿之一基础应用 Hi,各位热爱技术的小伙伴您们好,今年的疫情害人啊,真心祝愿您和您的家人大家都平平安安,健健康康.年前到现在一直没有总结点东西,写点东西,不然久了自己感觉自 ...

  6. 【Spring Data 系列学习】Spring Data JPA 基础查询

    [Spring Data 系列学习]Spring Data JPA 基础查询 前面的章节简单讲解了 了解 Spring Data JPA . Jpa 和 Hibernate,本章节开始通过案例上手 S ...

  7. 微信小程序状态管理工具 JStore

    微信小程序状态管理工具 JStore 闲着没事做,就想着给微信小程序写一个状态管理工具,名叫 JStore,这个状态管理工具是仿照 vuex 的几个方法来写的,所以有 vuex 的基础同学很容易理解. ...

  8. docker部署tensorflow serving以及模型替换

    Using TensorFlow Serving with Docker 1.Ubuntu16.04下安装docker ce 1-1:卸载旧版本的docker sudo apt-get remove ...

  9. view添加阴影

    //@mg:masksToBounds必须为NO否者阴影没有效果 //    cell.layer.masksToBounds = NO; cell.layer.contentsScale = [UI ...

  10. Linux监控系统相关资源和运行状态命令整理

    #前言:Linux系统自带了些实时查看监控系统运行状态的相关命令,接下来我们就来了解一下. #首先我们先来了解一下什么是进程 #进程:是Linux用来表示正在运行的程序的一种抽象概念,Linux系统上 ...