2016-09-25 4 views
3

В настоящее время я работаю над некоторыми скребками с cheerio и nightmare. Причина, по которой я использую оба, а не только cheerio, заключается в том, что я должен манипулировать сайтом, чтобы добраться до той части, которую я хочу очистить, и я нашел кошмар очень хорошим при выполнении этих сценариев.Возврат HTML-кода из Nightmare.js

Итак, сейчас я использую nightmare, чтобы получить до тех пор, пока не появится информация, которая мне нужна. После этого на evaluate() я пытаюсь как-то вернуть текущий html, а затем передать его cheerio, чтобы сделать царапину. Проблема в том, что я не знаю, как извлечь html из объекта document. Есть ли свойство из document, которое возвращает полное тело?

Вот что я пытаюсь сделать:

var Nightmare = require('nightmare'); 
var nightmare = Nightmare({show:true}) 
var express = require('express'); 
var fs = require('fs'); 
var request = require('request'); 
var cheerio = require('cheerio'); 
var app  = express(); 

var urlWeb = "url"; 
var selectCity = "#ddl_city" 

nightmare 
.goto(urlWeb) 
.wait(selectCity) 
.select('#ddl_city', '19') 
.wait(6000) 
.select('#ddl_theater', '12') 
.wait(1000) 
.click('#btn_enter') 
.wait('#aspnetForm') 
.evaluate(function(){ 

    //here is where I want to return the html body 
    return document.html; 


}) 
.then(function(body){ 
//loading html body to cheerio 
    var $ = cheerio.load(body); 
    console.log(body); 
}) 
+0

Обязательно ли все 'html' или' document.body' достаточно? –

+0

До сих пор мне просто нужно тело @ R.A.Lucas –

+0

Работает ли возврат 'document.body' от метода' оценки'? –

ответ

5

С этим работал:

document.body.innerHTML