Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python接口自动化35-r.html.render() 下载无反应问题解决

python接口自动化35-r.html.render() 下载无反应问题解决

作者头像
上海-悠悠
发布于 2020-10-27 02:33:58
发布于 2020-10-27 02:33:58
89100
代码可运行
举报
运行总次数:0
代码可运行

前言

使用requests-html库渲染html页面的时候,初次使用需下载 chromium 浏览器,但是这个地址是从国外下载的,所以慢的你怀疑人生,你懂得! pyppeteer-install下载没反应,r.html.render() 下载无反应?看完这篇就能解决! requests-html 是干什么用的呢?这个可以看之前这篇介绍https://www.cnblogs.com/yoyoketang/p/10663392.html

环境准备

先下载requests-html库

pip install requests-html==0.10.0 —index-url https://pypi.douban.com/simple

遇到问题

初次使用的时候,需先下载chromium 浏览器,下载方法有2种

第一种:使用命令行下载

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>pyppeteer-install
[W:pyppeteer.chromium_downloader] start chromium download.
Download may take a few minutes.

如果一直出现 Download may take a few minutes.很长时间不动,或者跟蜗牛爬的一样慢。

第二种:使用r.html.render() 下载

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from requests_html import HTMLSession
session = HTMLSession()

r = session.get('https://www.cnblogs.com/yoyoketang/')
r.html.render()  # 首次使用,自动下载chromium

运行代码后,也跟上面一样出现 Download may take a few minutes. 很长时间不动,或者跟蜗牛爬的一样慢。

主要原因是下载地址是国外的,有**的小伙伴可以开**下载,没有的就无法下载了!

替换下载源

既然已经知道是下载地址的问题了,那么我们只需在源码里面找到对应的下载地址,替换国内的下载源即可。 打开pycharm,找到External Libraries> site-packages 下的pyppeteer包

修改 chromium_downloader.py 文件,找到如下内容修改

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
downloadURLs = {
    'linux': f'{BASE_URL}/Linux_x64/{REVISION}/chrome-linux.zip',
    'mac': f'{BASE_URL}/Mac/{REVISION}/chrome-mac.zip',
    'win32': f'{BASE_URL}/Win/{REVISION}/{windowsArchive}.zip',
    'win64': f'{BASE_URL}/Win_X64/{REVISION}/{windowsArchive}.zip',
}

我的是windows 64位电脑,所以修改后为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
downloadURLs = {
    'linux': f'{BASE_URL}/Linux_x64/{REVISION}/chrome-linux.zip',
    'mac': f'{BASE_URL}/Mac/{REVISION}/chrome-mac.zip',
    # 'win32': f'{BASE_URL}/Win/{REVISION}/{windowsArchive}.zip',
    # 'win64': f'{BASE_URL}/Win_X64/{REVISION}/{windowsArchive}.zip',
    'win32': 'https://npm.taobao.org/mirrors/chromium-browser-snapshots/Win/575458/chrome-win32.zip',
    'win64': 'https://npm.taobao.org/mirrors/chromium-browser-snapshots/Win_x64/575458/chrome-win32.zip',
}

下面是各系统的chromium压缩包下载地址

  • linux: https://npm.taobao.org/mirrors/chromium-browser-snapshots/Linux_x64/575458/chrome-linux.zip
  • mac: https://npm.taobao.org/mirrors/chromium-browser-snapshots/Mac/575458/chrome-mac.zip
  • win32: https://npm.taobao.org/mirrors/chromium-browser-snapshots/Win/575458/chrome-win32.zip
  • win64: https://npm.taobao.org/mirrors/chromium-browser-snapshots/Win_x64/575458/chrome-win32.zip

替换完成后,在命令行输入 pyppeteer-install即可下载

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>pyppeteer-install
[W:pyppeteer.chromium_downloader] start chromium download.
Download may take a few minutes.
......
chromium download done.
[W:pyppeteer.chromium_downloader] chromium extracted to: C:\Users\dell\AppData\Local\pyppeteer\pyppeteer\local-chromium\588429

这个时候下载速度就非常快了。

下载本地安装

如果不想通过命令行下载,也可以自己下载安装包的方式安装,上面命令行下载完成后的安装地址是:C:\Users\用户名\AppData\Local\pyppeteer\ 目录 于是可以先下载安装包:https://npm.taobao.org/mirrors/chromium-browser-snapshots/Win/575458/chrome-win32.zip,下载完成后放到如下目录

C:\Users\自己电脑用户名\AppData\Local\pyppeteer\pyppeteer\local-chromium\588429\ 解压 chrome-win32.zip 文件

这种本地安装方式也可以

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
js笔试✏️ [1] URL查询参数
解析此URLhttp://www.domain.com/?user=rose&id=123&id=456&city=%E5%8C%97%E4%BA%AC%E5%B8%82&am
用户4793865
2023/01/12
13.3K0
滴滴前端一面经典手写面试题
一般来说,Promise.all 用来处理多个并发请求,也是为了页面数据构造的方便,将一个页面所用到的在不同接口的数据一起请求过来,不过,如果其中一个接口失败了,多个请求也就失败了,页面可能啥也出不来,这就看当前页面的耦合程度了
helloworld1024
2023/01/04
9570
前端一面必会手写面试题(边面边更)4
函数柯里化概念: 柯里化(Currying)是把接受多个参数的函数转变为接受一个单一参数的函数,并且返回接受余下的参数且返回结果的新函数的技术。
helloworld1024
2023/01/06
3380
node http请求 🎴
对于前端来说,网络请求主要就是用 ajax 的方式去处理。所以本文也会站在前端角度简单讲解 Node 中如何使用 http 模块。\n\n 前后端对接时,现在常用的请求方法有 GET、POST、PUT、PATCH、DELETE。当然,还有其他方法,但本文主要面向新手,希望能做到快速起步。所以本文只讲 GET 和 POST 这两种最最最常用的方法。\n\n 在敲代码前,你首先需要准备一个 编辑器(我用vs code)、浏览器、postman 还有安装好 Node.js 。\n\n 创建服务\n\nNode.js 提供了 http 模块,可用于网络请求。\n\n 创建一个 js 文件,输入以下代码。(本例的文件命名为 index.js)\n\njs\nconst http = require('http')\n\nconst server = http.createServer((res, req) => {\n req.end('hello world')\n})\n\nserver.listen(8000, () => {\n console.log('http://localhost:8000')\n})\n解释:- Node.js 使用 commonjs 语法,所以引入 http 模块使用了 require 的方法。\n- http 模块有一个 createServer 方法,该方法的参数是一个函数,函数里又有2个参数,res 是前端发送请求带过来的信息;req 是后端返回信息给前端时的一些方法和属性的集合。\n- 通过 req.end 方法,可以返回一段字符串给前端。\n- 通过 listen 方法可以设置需要监听的端口号,第二个参数是一个函数,我在控制台里输出 http://localhost:8000 是方便启动服务后方便自己打开这个地址。\n\n 使用 Node.js 运行上面的代码:\n\n\nnode index.js\n\n\n运行完上面的命令,控制台应该会输出 http://localhost:8000 ,此时打开浏览器,输入 http://localhost:8000 后页面上会出现 “hello world”,证明服务创建成功,并且可以访问了。\n\n\n
德育处主任
2022/08/30
1.1K0
node http请求 🎴
Mui开发笔记
1、上面是我根据官方的提示方法,以及问答社区朋友的回答,得到的返回刷新页面的方法。
李郑
2019/12/10
1.6K0
ES6中的Promise和Fetch
JavaScript是单线程执行的,因此,为了避免操作时的页面中断(体现为页面假死),可以使用回调函数。但是如果回调函数中仍然嵌套有回调函数,代码就会变得越来越不可维护。这篇文章介绍ES6如何通过Promise解决这个问题,并介绍了相关的Fetch方法。
张子阳
2018/09/30
1.6K0
Restful 表述性状态传递
REStful全称为表述性状态转移。任何事物只要有被引用的必要都为资源。资源可以为实体,可以为抽象的概念。
mySoul
2018/07/30
1.4K0
写给新手前端的各种文件上传攻略,从小图片到大文件断点续传
今年国庆假期终于可以憋在家里了不用出门了,不用出去看后脑了,真的是一种享受。这么好的光阴怎么浪费,睡觉、吃饭、打豆豆这怎么可能(耍多了也烦),完全不符合我们程序员的作风,赶紧起来把文章写完。
coder_koala
2019/11/04
3.3K0
写给新手前端的各种文件上传攻略,从小图片到大文件断点续传
开发中常用的JS知识点集锦
1、对象的深拷贝(一级属性拷贝和多级属性嵌套拷贝) //深拷贝函数(满足属性多级嵌套) function deepCloneObj(sourceObj){ var obj = (sourceO
tandaxia
2018/11/21
5360
javascript常用工具类的封装
一、js数组工具类 工具类方法 MyArrayFn包含的方法如下 判断一个元素是否在数组中 遍历元素:相当于原生forEach方法 遍历元素,对里面的每个值做处理再返回一个新的值:相当于原生map方法 数组排序:从小到大、从大到小、随机 去重 求两个集合的并集 求两个集合的交集 删除其中一个元素 最大值 最小值 求和 平均值 工具类代码 // js数组工具类 class MyArrayFn { /*判断一个元素是否在数组中*/ contains(arr, val) { re
不愿意做鱼的小鲸鱼
2022/09/26
1.7K0
javascript常用工具类的封装
百度前端一面常见手写面试题(持续更新中)
方法有很多种,这里提供一种比较简洁的写法,用到了ES10的Object.fromEntries():
helloworld1024
2022/09/24
4310
js高频手写题总结
经典面试题:实现add(1)(2)(3)(4)=10; 、 add(1)(1,2,3)(2)=9;
helloworld1024
2022/09/24
9490
js手写面试题总结
使用时间戳的节流函数会在第一次触发事件时立即执行,以后每过 wait 秒之后才执行一次,并且最后一次触发事件不会被执行
helloworld1024
2022/12/16
6510
腾讯前端高频手写面试题
函数柯里化概念: 柯里化(Currying)是把接受多个参数的函数转变为接受一个单一参数的函数,并且返回接受余下的参数且返回结果的新函数的技术。
helloworld1024
2022/11/15
6120
ajax
PostMan下载地址:https://www.postman.com/downloads/
roydonGuo
2022/11/02
2.4K0
ajax
javascript基础重点
1.在javascript中使用 == 比较,会自动转换数据类型再比较,有时候会 得到非常诡异的结果;一般情况下使用 === 比较,它不会自动转换数据类型,如果数据类型不一致,返回false,如果一致,再比较
lin_zone
2018/08/15
9830
那些你熟悉而又陌生的函数
我们最常用的是语法中的第二种 var timeoutID = scope.setTimeout(function[, delay]); 举个例子
苏南
2021/07/29
7590
JavaScript 相关的工具代码
当前 toLocaleTimeString 方法只能获取到 12 小时制的时间('上午09:10:01' | '下午08:10:24')
Krry
2019/05/06
8980
一篇,让你会写原生ajax
大家可以拿去任意定制,比如请求方式使用参数传入、指定参数类型、调用时控制是否同步等
阿超
2022/08/16
2410
最新前端初中级面试题合集一,你确定不看一看嘛
本文的面试题目是比较新的前端题目,适用于初中级的面试者,题目都是面试中高概率的题,也真诚的希望大家能够找到一个好的公司,希望这些真的对大家有用!谢谢,我会不断更新,希望大家能学到知识,进入心仪的公司.
叫我可儿呀
2020/04/17
3.7K0
相关推荐
js笔试✏️ [1] URL查询参数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验