Javascript 用JS解析远程DOM

Javascript 用JS解析远程DOM,javascript,node.js,dom,Javascript,Node.js,Dom,我希望获得远程网站的DOM并能够对其进行解析,也就是说,理想情况下,将解析后的结果转换为DOM节点,并有效地从中获取所需元素,然后对其进行处理。也就是说,我想从检索到的DOM中分割某些元素,并将它们存储在数组中以供进一步操作。这真的可以实现吗? 到目前为止,我有以下几点: import request from 'request'; export default function getBody(url, callback) { request(url, (err, res, body)

我希望获得远程网站的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获取到我的视图中,但结果返回为一个巨大的字符串,处理它将是一场噩梦。我曾尝试使用library从前端处理它,但我无法使头工作,并且它总是返回一个错误
请求的资源上不存在“Access Control Allow Origin”头。起源'http://localhost:3000因此,不允许访问。


要获取远程DOM并以上述方式解析它,最好的做法是什么?

如果您熟悉jQuery,可以使用它来遍历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.
  });
}

工作很有魅力,正是我需要的。