requests-html库render方法的使用
2024-10-08 04:37:23
一.render的使用
from requests_html import HTMLSession
session =HTMLSession()
response = session.get('https://www.cnblogs.com/guapitomjoy/')
print(response.html.render())
- 进行js注入
- 模拟人操作浏览器
二.render的参数
1.script(str)
执行的js代码
语法:response.html.render(script='js代码字符串格式')
2.scrolldown(int)
- 滑动滑块
- 和sleep联用为多久滑动一次
- 每次滚动一页
语法:response.html.render(scrolldown=页面向下滚动的次数)
3.retries(int)
加载页面失败的次数
4.wait(float)
加载页面的等待时间(秒),防止超时(可选)
5.sleep(int)
在页面初次渲染之后的等待时间
6.timeout(int or float)
页面加载时间上线
7.keep_page(bool)
如果为真,允许你用r.html.page访问页面
8.reload(bool)
如果为假,那么页面不会从浏览器中加载,而是从内存中加载
三.r.html.page与浏览器交互
1.基本语法
from requests_html import HTMLSession
session =HTMLSession()
response = session.get('https://www.cnblogs.com/guapitomjoy/')
print(response.html.render(keep_page=true))
async def run():
#交互语句
await r.html.page.XXX
try:
session.loop.run_until_complete(run())
finally:
session.close()
2.键盘事件
- keyboard.down('键盘名称'):按下键盘不弹起(与键盘有点不太down('h')只会出现一个h而不是hhhhhhh....)
- keyboard.up('键盘名称'):抬起按键
- keyboard.press('键盘名称'):按下+弹起
- keyboard.type('输入的字符串内容',{‘delay’:100}) delay为每个子输入后延迟时间单位为
ms
3.鼠标事件
点击
- click('css选择器',{ 'button':'left', 'clickCount':1,'delay':0})
- button为鼠标的按键
left
,right
, ormiddle
, - clickCount:点击次数默认次数为1
- delay:点击延迟时间,单位是毫秒
- button为鼠标的按键
- mouse.click(x, y,{ 'button':'left', 'clickCount':1,'delay':0})
- x,y:muber数据类型,代表点击对象的坐标
点下去不抬起
- mouse.down({'button':xxx,clickCount:xxx})
抬起鼠标
- mouse.up({'button':xxx,clickCount:xxx})
4.其他
等待
- waitFor('选择器, 方法 或者 超时时间')
- 选择器: css 选择器或者一个xpath 根据是不是
//
开头 - 方法:时候此方法是page.waitForFunction()的简写
- 超时时间:单位毫秒
- 选择器: css 选择器或者一个xpath 根据是不是
等待元素加载
waitForSelector('css选择器')
获取x,y坐标
mydic =await r.html.page.evaluate('''() =>{
var a = document.querySelector('#kw') #对象的css选择器
var b = a.getBoundingClientRect()
return {'x':b.x,'y':b.y , 'width':b.width , 'height':b.height }
}''')
执行js代码
evaluate('js代码字符串格式')
输入内容
type('css选择器',’内容‘,{’delay‘:100})
聚焦
focus('css选择器')
移动到
hover('css选择器')
获取cookies
cookies()
设置页面大小
setViewport({'width': 1366, 'height': 768})
截图
screenshot({'path':保存本地路径,'clip':{'x':1,'y':1,'width':100,'height':100}})
- x:图片的x坐标
- y:图片的y坐标
- width: 图片宽
- height:图片高
最新文章
- Linux学习之CentOS(二十)--CentOS6.4下修改MySQL编码方法
- cocoapods 命令
- IOS开发 strong,weak,retain,assign,copy nomatic 等的区别与作用
- java NIO与IO的区别
- 实现简单的WebPart
- 使用C# DES解密java DES加密的字符串
- java面试题系列11
- FLOYD 求最小环
- Cognos配置管理
- 玩转C线性表和单向链表之Linux双向链表优化
- SQL SERVER数据库修改是否区分大小写(转载)
- python os.path.splitext()
- css实现3D立方体旋转特效
- OAF中多语言的实现(转)
- vue-router 实践
- 常用的快速Web原型图设计工具
- Python 更新dict
- php -- 设计模式 之 单例模式
- Asp.net MVC 实现JSONP
- ORACLE 12C RMAN 功能增强
热门文章
- Android中使用Apache common ftp进行下载文件
- oracle函数 NEW_TIME(dt1,c1,c2)
- oracle函数 COALESCE(c1, c2, ...,cn)
- dynamic_cast, static_cast, const_cast, reinterprt_cast浅析
- Transformer的PyTorch实现
- 命名分组(?<;name>;....)
- 如何入门 C++ AMP 教程
- springboot&;mybatis 增删改查系列(一)
- vscode settings.json配置
- 用mysql查询某字段是否有索引