requests_html
0|1render方法
我们先理一下关系requests
和的作者是同一个人,pyppeteer
是nodejs
中puppeteer
的非官方实现
requests-html
调用的pyppeteer
与浏览器进行交互,
puppeteer
的中文文档 点这里传送
pyppeteer
的文档 博文参考
调用render 方法启动pyppeteer
使用之前要先下载chromium
下载地址
你懂的,天朝网络环境很复杂,如果要用pyppeteer
自己绑定的chromium
,半天都下载不下来,所以我们要手动安装,然后在程序里面指定executablePath
对于requests-html
源代码在714行中加入
可以看到如上图中我用红色的圈出来的地方,标示的是无头浏览器HeadlessChrome
,这个是明显不是正常的人类用户,会被反扒网站所识别
在正常使用的浏览器的控制台中键入navigator.userAgent
就可以看到浏览器的请求头把他复制到--user-agent
之后,注意千万不能有空格,--nosand
是以最高权限运行
启动参数
请求网站可以看到我们进行设置的UA头生效了
render 方法的参数
- retries 重试次数,默认为8,
- script,JS 脚本,可选参数,默认为None,
str
类型,如果有值,返回JS执行脚本的返回值 - wait 加载页面前等待的秒数,防止超时,默认0.2秒,可选参数,浮点型
- scrolldown,页面滚动次数,整数,默认为0,
- sleep, 首次渲染之后暂停的秒数,接收整数,可选类型,默认为0
- reload 默认为
True
,如果为False,如果为False
,就会从内存中加载内容 - keep_page,默认为
False
,如果为True
,就可以通过r.html.page
和页面进行交互
如果sleep
和scrolldown
一起用,表示翻一夜,停几秒
JS注入实例1
输出结果为
JS 注入实例2 更改navigator.webdriver
scrolldown
这个我们先改一下源码
与浏览器进行交互
page.screenshot([options])
截图实例
page.evaluate(pageFunction[, ...args])
- pageFunction <function|string> 要在页面实例上下文中执行的方法
page.setViewport()
设置页面大小
page.cookies()
如果不指定任何 url,此方法返回当前页面域名的 cookie。 如果指定了 url,只返回指定的 url 下的 cookie。
page.type(selector, text[, options])
page.click(selector[, options])
page.focus(selector)
- selector
<string>
要给焦点的元素的选择器selector。如果有多个匹配的元素,焦点给第一个元素。
page.hover(selector)
- selector
<string>
要hover的元素的选择器。如果有多个匹配的元素,hover第一个
page.waitFor(selectorOrFunctionOrTimeout[, options[, ...args]])
- 如果
selectorOrFunctionOrTimeout
是string
, 那么认为是 css 选择器或者一个xpath, 根据是不是'//'开头, 这时候此方法是 page.waitForSelector 或 page.waitForXPath的简写 - 如果
selectorOrFunctionOrTimeout
是function
, 那么认为是一个predicate,这时候此方法是page.waitForFunction()的简写 - 如果
selectorOrFunctionOrTimeout
是number
, 那么认为是超时时间,单位是毫秒,返回的是Promise对象,在指定时间后resolve - 否则会报错
page.emulate
模拟手机
键盘事件
语法:
res.html.page.keyboard.XXX
keyboard.down(key[, options])
- key
<string>
按下的键名, 比如 ArrowLeft. 一个包含所有键名的列表见 USKeyboardLayout.- - options
<object>
- text<string>
如果指定,则使用此文本生成输入事件.
keyboard.up(key)
- key
<string>
要释放的键的键名, 例如 ArrowLeft
keyboard.press(key[, options])
- key
<string>
按下的键名, 比如 ArrowLeft. - options
<object>
- text<string>
如果指定,则使用此文本生成输入事件。 - delay<number>
在 keydown 和 keyup 间隔的时间, 以毫秒为单位. 默认为 0。
keyboard.type(text, options)
- text
<string>
要输入到焦点元素中的文本。 -
options
<object>
- delay<number>
按键间隔的时间, 以毫秒为单位. 默认为 0。鼠标事件
r.html.page.mouse.XXX
mouse.click(x, y, [options])
- x
<number>
- y
<number>
- options
<object>
- button
<string>
left ,right 或 middle,默认是 left。 - clickCount
<number>
默认是 1。见 UIEvent.detail。 - delay
<number>
在毫秒内且在 mousedown 和 mouseup 之间等待的时间。 默认为0。
mouse.down([options])
- options
<object>
- button
<string>
left,right 或 middle,默认是 left。 - clickCount
<number>
默认是 1。
mouse.up([options])
- options
<object>
- button
<string>
left,right,或 middle,默认是 left。 - clickCount
<number>
默认是 1。
0|1项目代码
puppeteer
项目参考 传送门
模拟登陆Gmail
参考作者:https://www.cnblogs.com/ruhai/p/11318133.html
__EOF__
作 者:ZZ_happy
出 处:https://www.cnblogs.com/zhouze/p/11508894.html
关于博主:编程路上的小学生,热爱技术,喜欢专研。评论和私信会在第一时间回复。或者直接私信我。
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 上周热点回顾(1.20-1.26)
· 【译】.NET 升级助手现在支持升级到集中式包管理