playwright自动化测试(2)
更为详细的教程,建议查看业内大咖崔庆才的博客,非常多的基础知识。https://cuiqingcai.com/202262.html
错误解决
pip安装过程中出现下发VC++ 14错误的,安装下面的这个微软包error: Microsoft Visual C++ 14.0 is required. Get it with "Build Tools for Visual Studio"
https://pan.baidu.com/s/1GgLLcGTMj80JZSvfg1LuYw?pwd=7777
百度图片下载小例子(风景图片)
1 | from playwright.sync_api import sync_playwright |
一些高级功能
事件监听
response 事件,同时将回调方法设置为 on_response
1 | def on_response(response): |
网络劫持
最后再介绍一个实用的方法 route
可以实现一些网络劫持和修改操作,比如修改 request 的属性,修改 response 响应结果等。
取消图片加载
1
2
3
4
5
6
7
8def cancel_request(route, request):
route.abort()
page.route(re.compile(r"(\.png)|(\.jpg)"), cancel_request)
page.goto("https://spa6.scrape.center/")
page.wait_for_load_state('networkidle')
page.screenshot(path='no_picture.png')
browser.close()调用了 route 方法,第一个参数通过正则表达式传入了匹配的 URL 路径
这里代表的是任何包含 .png 或 .jpg 的链接,遇到这样的请求,会回调 cancel_request 方法处理
cancel_request 方法可以接收两个参数,一个是 route,代表一个 CallableRoute 对象
另外一个是 request,代表 Request 对象。
这里我们直接调用了 route 的 abort 方法,取消了这次请求,所以最终导致的结果就是图片的加载全部取消了。在爬虫的过程中,浏览器中是否把图片加载出来不重要,可以提高整个页面的加载速度,提高爬取效率。
替换成本地文件
1
2
3
4
5
6
7
8<html>
<head>
<title>Hack Response</title>
</head>
<body>
<h1>Hack Response</h1>
</body>
</html>下面的例子是,再进入这个网站,网页标题和内容只会显示
Hack Response,而不是原本的内容1
2
3
4def modify_response(route, request):
route.fulfill(path="./custom_response.html")
page.route('/', modify_response)
page.goto("https://spa6.scrape.center/")
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 梧桐的学习日记!





