我正在构建一个从页面获取主要图像(基于Content-Length
)的刮刀。它遍历所有<img>
元素并发出HEAD
个请求。但某些页面,尤其是移动,页面加载后插入图像。关于如何解决这个问题的任何想法?
我正在使用node.js
。
答案 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,更容易“轻松”“抓取”页面。
的示例