jquery抓取网页内容( 本文和调试()()的调试及调试)

优采云 发布时间: 2022-03-28 15:18

  jquery抓取网页内容(

本文和调试()()的调试及调试)

  

  前言

  本文不涉及性能面板的内容。稍后将发表另一篇文章。以下是目录:

  常用命令和调试 Blackbox 脚本: Blackbox Script Console 内置命令 远程调试 WebView1. Chrome Devtools 的使用2. 菜单面板拆解

  

  3.常用命令及调试1.调出快捷面板:cmd + shift + p

  打开 Devtools,输入 cmd+shift+p 激活它,然后开始在栏中输入您要查找的命令或输入“?” 签名以查看所有可用的命令。

  

  

  1.性能监视器:> 性能监视器

  

  将显示性能监视器以及 CPU、JS 堆大小和 DOM 节点等相关信息。

  2.FPS实时监控性能:>FPS选择第一项

  

  3.要捕获单个元素:> screen 选择捕获节点屏幕截图

  

  

  2. DOM 断点调试

  当您想要调试特定元素的 DOM 中的更改时,可以使用此选项。这些是 DOM 更改断点的类型:

  

  

  如上图:输入框获得焦点时*敏*感*词*form标签并触发断点调试

  3. 黑盒脚本:黑盒脚本

  删除多余的脚本断点。

  例如第三方(Javascript 框架和库的堆栈跟踪、广告等)。

  为避免这种情况并专注于核心代码,请在 Sources 或 Network 选项卡中打开文件,右键单击并选择 Blackbox Script

  

  4. 事件*敏*感*词*器:Event Listener Breakpoints 点击Sources面板展开Event Listener Breakpoints,选择*敏*感*词*事件类别,触发事件启用断点

  

  如上图:*敏*感*词*键盘输入事件后,会跳转到断点处。

  5. 本地覆盖:本地覆盖

  用我们自己的本地资源覆盖网页使用的资源。

  同样,使用 DevTools 工作区设置持久化,将本地文件夹映射到网络,修改 chrome 开发者功能中的 CSS 样式,都会直接更改本地文件,重新加载页面,以及使用本地资源。达到持久的效果。

  此项可以自动修改XHR异步请求以外的资源。如果下载的文件没有格式化,可以点击左下角。

  

  6. 扩展:本地覆盖模拟模拟数据

  来自:chrome 开发者工具 - 本地覆盖

  对于返回json数据的接口,可以使用该函数简单模拟返回数据。

  例如:

  

  对象或数组类型,从而覆盖原来的接口请求。

  4. 控制台内置命令

  可以执行常见任务的功能,例如选择 DOM 元素、触发事件、监视事件、在 DOM 中添加和删除元素等。

  这就像 Chrome 自己实现的 jQuery 的增强版。

  1. $(selector, [startNode]): 单个选择器

  document.querySelector 的简写语法:

  $('a').href;

$('[test-id="logo-img"]').src;

$('#movie_player').click();

复制代码

  

  控制台也会提前查询对应的标签,很贴心。也可以触发事件,例如暂停播放:

  

  此函数还支持第二个参数 startNode,它指定要从中搜索元素的“元素”或节点。该参数的默认值为文档

  2. $(selector, [startNode]): 全选择器

  document.querySelectorAll 的简写,返回标签元素数组语法:

  $('.button')

复制代码

  

  可以使用循环切换全选

  

  或打印属性

  

  此函数还支持第二个参数 startNode,它指定要从中搜索元素的“元素”或节点。此参数的默认值是文档用法:

  var images = $('img', document.querySelector('.devsite-header-background'));

for (each in images) {

console.log(images[each].src);

}

复制代码

  

  3. $x(path, [startNode]): xpath 选择器

  $x(path) 返回与给定 xpath 表达式匹配的 DOM 元素数组。

  例如,以下代码返回

  页面上的所有元素:

  $x("//p")

复制代码

  

  以下代码返回

  收录元素的所有元素:

  $x("//p[a]")

复制代码

  

  Xpath多用于爬虫爬取,前端同学可能不太熟悉。

  4. getEventListeners(object):获取指定对象的绑定事件

  getEventListeners(object) 返回在指定对象上注册的事件*敏*感*词*器。返回值是一个对象,其中收录每个注册事件类型的数组(例如,click 或 keydown)。每个数组的成员都是描述为每种类型注册的侦听器的对象。用法:

  getEventListeners(document);

复制代码

  

  相比在监控面板中查看事件,这个 API 方便多了。

  5. 花哨的控制台

  

  除了不同级别的警告和错误打印

  

  还有其他非常有用的印刷品。

  1. 可变打印:%s、%o、%d 和 %c

  const text = "文本1"

console.log(`打印${text}`)

复制代码

  除了标准的 ES6 语法之外,实际上还支持四种类型的字符串输出。他们是:

  console.log("打印 %s", text)

复制代码

  还有一个特殊的 %c 可以用来重写输出样式。

  console.log('%c 文本1', 'font-size:50px; background: ; text-shadow: 10px 10px 10px blue')

复制代码

  

  当然,你也可以和其他人结合使用(注意占位符的顺序)。

  const text = "文本1"

console.log('%c %s', 'font-size:50px; background: ; text-shadow: 10px 10px 10px blue', text)

复制代码

  

  你也可以这样玩:

  console.log('%c Auth ',

'color: white; background-color: #2274A5',

'Login page rendered');

console.log('%c GraphQL ',

'color: white; background-color: #95B46A',

'Get user details');

console.log('%c Error ',

'color: white; background-color: #D33F49',

'Error getting user details');

复制代码

  

  2. 打印对象的技巧

  当我们需要打印多个对象时,我们往往会一个一个地输出。而且看不到对象名,不利于阅读:

  

  我以前是这样打印的:

  console.log('hello', hello);

console.log('world', world);

复制代码

  这显然有点笨拙和麻烦。实际上,输出也支持对象解构:

  console.log({hello, world});

复制代码

  

  3. 布尔断言打印:console.assert()

  当您需要在评估某些条件时打印日志时,这很有用。

  语法

  console.assert(assertion,obj)

复制代码

  用法

  const value = 1001

console.assert(value===1000,"value is not 1000")

复制代码

  

  4. 对控制台进行分组:console.group()

  当您需要将详细信息分组或嵌套在一起以便能够轻松读取日志时,请使用此功能。

  console.group('用户列表');

console.log('name: 张三');

console.log('job: 前端');

// 内层

console.group('地址');

console.log('Street: 123 街');

console.log('City: 北京');

console.log('State: 在职');

console.groupEnd(); // 结束内层

console.groupEnd(); // 结束外层

复制代码

  

  5. 测试执行效率:console.time()

  不如性能 API 精确,但比易于使用更好。

  let i = 0;

console.time("While loop");

while (i < 1000000) {

i++;

}

console.timeEnd("While loop");

console.time("For loop");

for (i = 0; i < 1000000; i++) {

// For Loop

}

console.timeEnd("For loop");

复制代码

  

  6. 输出表:console.table()

  这个适用于打印数组对象。. .

  let languages = [

{ name: "JavaScript", fileExtension: ".js" },

{ name: "TypeScript", fileExtension: ".ts" },

{ name: "CoffeeScript", fileExtension: ".coffee" }

];

console.table(languages);

复制代码

  

  7. 打印 DOM 对象节点:console.dir()

  打印出对象的所有属性和属性值。console.dir() 和 console.log() 的区别并不明显。如果用于打印字符串,则输出完全相同。

  console.log("Why,hello!");

console.dir("Why,hello!");

复制代码

  

  输出对象时,只是显示方式不同(log被识别为字符串输出,dir直接打印对象)。

  

  唯一显着的区别是打印 dom 对象:

  console.log(document)

console.dir(document)

复制代码

  

  一个打印出普通标签,另一个打印出 DOM 树对象。

  6. 远程调试WebView

  使用 Chrome 开发者工具在原生 Android 应用程序中调试 WebView。

  配置 WebView 以进行调试。在 WebView 类上调用静态方法 setWebContentsDebuggingEnabled。if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.KITKAT) { WebView.setWebContentsDebuggingEnabled(true); 复制代码在手机上启用usb调试,然后插入电脑。在 Chrome 地址栏中输入:Chrome://inspect

  

  通常,当您在 App 中打开 WebView 时,您的页面会被监控并以 chrome 显示。4. 点击页面下方的inspect,可以实时查看WebView页面在手机上的显示状态。(第一次使用可能是白屏,这是因为你需要去那里下载文件)

  

  除了检查选项卡,还有焦点选项卡:

  也可以使用其他应用程序中的 WebView。例如,这是一个应用程序中的一个游戏,它也使用了一个网页:

  

  7.调试 Node.js

  详情可以查看阿里云社区的这篇文章:

  Node.js 应用程序故障排除手册 - 正确启用 Chrome DevTools

  

  ps:属于我的知识盲区,我就不搬了。

  参考

  实用的 Chrome 开发工具 —

  常用命令和调试移动网络专家 —

  远程调试控制台实用程序 API 参考 控制台 API 参考

  ❤️读一件事

  如果你觉得这个内容有启发性,我想邀请你帮我一个小忙:

  点个赞,让更多人看到这个内容

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线