未加星标

puppeteer快速调试

字体大小 | |
[前端(javascript) 所属分类 前端(javascript) | 发布者 店小二05 | 时间 2018 | 作者 红领巾 ] 0人收藏点击收藏

在我们使用chrome作为爬虫获取网页数据时,往往需如下几步。

打开chrome

导航至目标页面

等待目标页面加载完成

解析目标页面数据

保存目标页面数据

关闭chrome

我们实际的编码往往集中在第4步,并且,在开发过程中,解析网页数据往往不是一步到位的,需要经过反复多次调试才行。如果每次调试都需要经过这一个过程就显得效率过低。

此时,我们希望有一种类似调试程序中的"附加到进程"类似的方法,不必每次都打开chrome,跳转到目标页面,直接进行第4步,解析现有页面。本文这里就介绍一个这样的方法。

以远程调试的方式启动chrome:

"C:\Program Files (x86)\Google\Chrome\Application\Chrome.exe" -- remote - debugging - port = 9222 -- user - data - dir = "r:\chrome\cache"

手动跳转到目标网页。


puppeteer快速调试

此时就可以通过 http://127.0.0.1:9222/json 查看调试信息了。

[{
"description" : "" ,
"devtoolsFrontendUrl" : "/devtools/inspector.html?ws=127.0.0.1:9222/devtools/page/9067DC581E400BFF607DC63792BBCD2E" ,
"faviconUrl" : "https://tianfang.cnblogs.com/favicon.ico" ,
"id" : "9067DC581E400BFF607DC63792BBCD2E" ,
"title" : " 天方 - 博客园 " ,
"type" : "page" ,
"url" : "https://tianfang.cnblogs.com/" ,
"webSocketDebuggerUrl" : "ws://127.0.0.1:9222/devtools/page/9067DC581E400BFF607DC63792BBCD2E"
}]

调试地址为: "ws://127.0.0.1:9222/devtools/page/9067DC581E400BFF607DC63792BBCD2E"。在实际运行过程中,可以通过axios库来自动获取这个地址:

const axios = require ( 'axios' );
async function get_debug_url () {
var rsp = await axios . get ( 'http://127.0.0.1:9222/json' );
return rsp . data [ 0 ]. webSocketDebuggerUrl ;
}

利用 puppeteer.connect(options) 连接,获得的是一个browser对象,在利用 browser.pages() 获取当前打开的page,直接操作page即可。

const puppeteer = require ( 'puppeteer-core' );
async function run () {
var ws = await get_debug_url ();
const browser = await puppeteer . connect ({
"browserWSEndpoint" : ws ,
"defaultViewport" : { width: 1000 , height: 600 }
});
const pages = await browser . pages ();
const page = pages [ 0 ];
await page . screenshot ({ path: 'screen.png' });
console . log ( "complte" );
};
run ();

究其本质,这里和我文章 使用CefSharp在.Net程序中嵌入Chrome浏览器(六)――调试 中的远程调试的原理是一样的。这里我虽然是用的puppeteer为例,其它基于Chrome DevTools Protocol的工具应该也是一样可以用的。

本文前端(javascript)相关术语:javascript是什么意思 javascript下载 javascript权威指南 javascript基础教程 javascript 正则表达式 javascript设计模式 javascript高级程序设计 精通javascript javascript教程

代码区博客精选文章
分页:12
转载请注明
本文标题:puppeteer快速调试
本站链接:https://www.codesec.net/view/621241.html


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 前端(javascript) | 评论(0) | 阅读(24)