2013-05-23 4 views
2
page.evaluate(function() { return document; }, function(result){  
    console.log(result)      
    next(); 
}); 

результат на самом деле огромный объект. Я не знаю свойств и атрибутов этого объекта. Мне просто нужен HTML-код страницы as you would see it in Chrome inspector.Используя Phantom.js, оцените, как я могу получить HTML-страницу?

С точки зрения объекта, кажется, что HTML содержит CSS и javascript. Это странно. Пользователь не должен видеть CSS и javascript, потому что они не являются HTML-страницей веб-страницы. Это внешние файлы. Мне нужен только HTML, который пользователь увидит.

ответ

7

Тип document - это HTML-документ. Чтобы получить всю DOM в виде строки, вы можете сделать document.documentElement.outerHTML.

С внешней стороны evaluate, вы можете использовать page.content. Это строка.

Я не знаю, что вы подразумеваете под «HTML включает CSS и JavaScript» или «HTML веб-страницы». Вы имеете в виду разницу между источником страницы и DOM, измененным с помощью сценариев? Оба вышесказанного дают вам текущий DOM, а не исходный источник страницы.

+1

Спасибо. HTML напечатан. Тем не менее, страница, которую я оцениваю, - это приложение Backbone. Почему я не вижу представления, отображаемые в HTML. Это похоже на то, что javascript вообще не запускался. – TIMEX

+2

Трудно сказать без дополнительной информации, но возможно, что вы получаете доступ к HTML до того, как код инициализации имел шанс запустить. Убедитесь, что вы обращаетесь к 'page.document' в обратном вызове, который вы предоставляете' page.open'. Вы также можете попробовать добавить время для удовольствия. –

Смежные вопросы