DomCurl:Curl + JavaScript前端抓取小工具

Posted 21CTO

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DomCurl:Curl + JavaScript前端抓取小工具相关的知识,希望对你有一定的参考价值。

21世纪技术官导读:开发过网页爬虫的同学,会发现一些网页越来越难抓,在后端我们可以使用curl来抓取,但是处理起来非常复杂。现在前端出来一些好工具,使用javascript就可以开发出类似curl的程序,帮助我们直接在浏览器端直接获取相关的内容,并充分利用好Chrome的开发工具。


很长一段时间以来,我一直在思考,我们常用的浏览器的未来。“如果所有东西都是由网络提供动力的,但为啥没有浏览器的事儿?” 


如果你有完整权限访问浏览器,但是没有看见“金子”,那么和大家说一个新的服务和机会,浏览器里蕴藏着新的机会。


使用浏览器作可以让开发者利用已经输出的html,与自定义的JavaScript函数执行相结合,对其内容进行深入分析。


在服务器上运行浏览器,我们可以更轻松的构建和分析动态生成数据的服务,这将使我们能够更轻松地运行自己的逻辑,对页面上的数据能更有效操作的能力。


从想法到实现需要一段时间,但我现在认为已经到达了那里。


Puppeteer是一个基于Chrome Dev Tools协议之上的JavaScript库,它允许开发自动化和编写Chrome浏览器的脚本。


我的日常工作涉及很多调试Web服务器,以确保网站质量。与许多开发人员一样,我使用curl向Web服务器发出请求并获取返回的内容。 


而如今,开发者正在构建使用大量JavaScript构建的网站,还有像react开发的这类网站,这使得抓取到的内容不是完整的内容。


于是我决定创建一个类似cUrl的工具来获取资源,并在称为domcurl的页面上运行JavaScript。


domcurl是一个使用Puppeteer的小型Node.js应用程序,可以通过以下命令进行安装:


npm install domcurl


像curl命令一样,您可以发出一个简单的domcurl [url]来获取资源并在页面上运行JS。


它不会复制所有的curl ,但它具有以下功能:


指定要抓取的网址,即domcurl [url]

用-v检查响应标题。 即, domcurl -v [url]

使用-b即, domcurl [url] -b "test=hello; Domain=airhorner.com; HttpOnly;" -b setcookie domcurl [url] -b "test=hello; Domain=airhorner.com; HttpOnly;" -b domcurl [url] -b "test=hello; Domain=airhorner.com; HttpOnly;" -b

"hello=world; Domain=airhorner.com; HttpOnly;"

使用-H参数添加自定义标题。

使用--stderr手动设置STDOUT和-o和STDERR


我发现它非常有用,但它不能像curl那样流式传输结果,必须等待CSS和JS被下载和执行。


后来我又添加了一些基于JavaScript和Chrome的特性。


输出一个Chrome开发工具跟踪文件(包括屏幕截图):


domcurl --url https://example.com --trace test.json


如果你需要将其集成到任何现有应用程序中,可以将其作为JavaScript模块加入。

 const {domcurl} = require('domcurl'); domcurl(`https://paul.kinlan.me/`, {}); 


现在这个工具还不是特别全面,但我认为The Headless Web正在成熟,像Puppeteer和其它工具将帮助开发者在浏览器端抓取页面持续提供强大功能。 我们只需建立规则逻辑就可以了。


译者:春晖

来源:21世纪技术官


以上是关于DomCurl:Curl + JavaScript前端抓取小工具的主要内容,如果未能解决你的问题,请参考以下文章

javascript的题。

javascript JavaScript isset()等效: - JavaScript

JavaScript 使用JavaScript更改CSS(JavaScript)

JavaScript之基础-1 JavaScript(概述基础语法)

前端基础-JavaScript的基本概述和语法

JavaScript