在JS中解析远程DOM
Parse remote DOM in JS
我想获得远程网站的DOM并能够对其进行解析,即理想情况下将解析结果转换为DOM节点,并从中有效地获取所需元素,然后进行处理。也就是说,我想从检索到的DOM中切片某些元素,并将它们存储在数组中以供进一步操作。它真的可以实现吗?到目前为止,我带来了这个:
import request from 'request';
export default function getBody(url, callback) {
request(url, (err, res, body) => {
callback(body);
});
}
在routes文件夹中:
import express from 'express';
import getBody from '../server';
const router = express.Router();
const url = 'http://www.google.com';
let result = {};
getBody(url, response => {
result = response;
});
router.get('/', (req, res, next) => {
res.render('index', { title: 'Express', data: result });
});
export default router;
这段代码将远程页面的DOM输入到我的视图中,但结果是一个巨大的字符串,处理它将是一场噩梦。我曾尝试使用浏览器请求库从前端处理它,但我无法使标题工作,它总是返回错误No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.
为了获得远程DOM并以上面描述的方式解析它,最好的做法是什么?
如果您熟悉jQuery,您可以使用cheerio来浏览DOM。
import request from 'request';
import cheerio from 'cheerio';
export default function getBody(url, callback) {
request(url, (err, res, body) => {
$ = cheerio.load(body);
$('h2') // finds all of the `h2` tags within the `body` object.
});
}
相关文章:
- 如何将Knockout.JS与服务器已经在DOM中呈现的数据同步
- 从popup.js|Chrome扩展访问DOM
- 如何让React JS点击处理程序在执行时更新DOM
- JS应用程序中基于DOM的XSS保护
- React.js如何使用虚拟DOM加速渲染
- spin.js/angular spinner:如何将spin定位到DOM元素中(包括plunker演示)
- 正在寻找从JSON/对象构建DOM客户端的JS库
- Ember.js-获取DOM元素的模型数据
- Ember.js:通过绑定/模型查找DOM元素
- 你能在JS中获得一个样式而不将其附加到DOM元素吗
- 来自jQuery,如何在React.js中制作DOM动画?例如设置进度条的动画
- 在执行JS脚本后监视对DOM的更改
- Angular JS根据搜索结果和点击事件更新DOM元素
- 在 Greasemonkey 中修改 Angular JS 中的 DOM 元素
- 如何在 Knockout.js 中更新可观察数组后立即使用 DOM 容器
- Raphael JS:如何从 Dom 对象(Element.node)获取 Raphael 元素
- JS DOM - document.getElementById 和按名称选择之间的区别
- 如何访问IE XHTML DOM+JS引擎,而无需启动浏览器本身
- 通过DOM - JS创建事件时传递元素作为参数
- 使用HTML DOM JS分配事件