pyppeteer -- python版本的puppeteer,一个强大的chronium headless浏览器API
最近搞天猫用了一波儿,记录一下。
先上文档: https://miyakogi.github.io/pyppeteer/
举个最简单的例子入门一下:
比如打开百度,然后截图
下面说一些小技巧:
1、启动参数
注意:同一个用户目录(userDataDir)不能被两个chrome进程使用,如果你要多开,记得分别指定用户目录。否则会报编码错误。
2、设置viewport
自动获取当前屏幕大小并设置viewport
3、导出或加载cookie
4、选择器
让人极度舒适的一个特性:
使用 page.querySelector如果没有找到指定的对象,则返回None,而不是抛出异常。不管规范不规范,反正比selenium爽多了。
5、hook
在页面开始加载前注入js代码,例如修改掉webdriver属性,让天猫检测不到
6、关于各种事件的isTrusted
这个js事件属性,用js是无法伪造的,但是用pyppeteer发生的各种操作所触发的事件,是完全真实的,这个归功于CDP吧。
7、卡死
如果在操作过程中不小心点击了某个a标签,导致浏览器新打开了一个标签页,而你的代码还在傻乎乎的使用之前的page对象做操作的时候,整个进程就卡住了
没有超时、没有异常、就是完全的不知道在干啥
当你把新开的标签页手动关闭后,一切就恢复原样。
tips:
避免这种情况的发生,其实也很简单,就是在每个可能误操作点击导致新开标签页的行为后面都强制关闭一下其他标签页:
比如: