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 isset()等效: - JavaScript
JavaScript 使用JavaScript更改CSS(JavaScript)