在onload JS DOM注入后刮擦页面

时间:2012-03-14 16:47:25

标签: javascript dom node.js web-scraping

我正在构建一个从页面获取主要图像(基于Content-Length)的刮刀。它遍历所有<img>元素并发出HEAD个请求。但某些页面,尤其是移动,页面加载后插入图像。关于如何解决这个问题的任何想法?

我正在使用node.js

2 个答案:

答案 0 :(得分:0)

我无法确定它是否解决了您的问题,但您可以考虑使用jsdom,因为它可以在页面中获取和执行脚本,并在服务器端为您提供DOM。类似的东西:

var request = require('request'),
    jsdom = require('jsdom').jsdom;

request(url, function(err, response, body) {
  if(err) return console.error(err);

  var doc = jsdom(body, null, {
    FetchExternalResources: ['script', 'img']
  });
  var window = doc.createWindow();

  var images = doc.getElementsByTagName('img');
});

答案 1 :(得分:0)

使用PhantomJS。它“是一个带有JavaScript API的无头WebKit”。可以把它想象成一个可以通过JavaScript API控制的整个浏览器。因为它是一个浏览器,它将完全执行页面,然后你可以刮掉它们。

与Node.js有些类似,但它实际上是一个完整的浏览器,您的脚本可以完全访问您下载的页面的DOM。因此,通过使用jQuery之类的东西访问DOM,而不是仅仅访问原始HTML,更容易“轻松”“抓取”页面。

以下是DOM manipulation

的示例