Очистить страницу после загрузки JS DOM инъекций - PullRequest
0 голосов
/ 14 марта 2012

Я строю скребок, который получает основные изображения (на основе Content-Length прямо сейчас) со страницы. Он проходит через все элементы <img> и делает запрос HEAD. Но некоторые страницы, особенно мобильный, вставьте изображения после загрузки страницы. Любые идеи о том, как справиться с этим?

Я использую node.js.

Ответы [ 2 ]

0 голосов
/ 15 марта 2012

Использование PhantomJS .Это «безголовый WebKit с JavaScript API».Думайте об этом как о целом браузере, которым вы можете управлять через JavaScript API.Так как это браузер, он будет полностью выполнять страницы, а затем вы сможете их очистить.

Это несколько похоже на Node.js, но на самом деле это полноценный браузер, где ваши скрипты заполненыдоступ к DOM страницы, у вас есть его вниз.Так что намного проще "разумно" поковырять страницу, получая доступ к DOM с помощью чего-то вроде jQuery, вместо простого доступа к необработанному HTML.манипуляция

0 голосов
/ 14 марта 2012

Я не могу быть уверен, что это решит вашу проблему, но вы можете использовать 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');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...