2016-09-25 3 views
3

Je travaille actuellement sur un grattage avec cheerio et nightmare. La raison pour laquelle j'utilise les deux et pas seulement cheerio c'est parce que je dois manipuler le site pour arriver à la partie que je veux gratter et j'ai trouvé le cauchemar très bon pour faire ces scripts.Retour corps HTML de Nightmare.js

Donc, en ce moment j'utilise nightmare pour obtenir jusqu'à la partie que l'information dont j'ai besoin est affichée. Après cela, sur le evaluate() je suis en train de retourner en quelque sorte le courant html pour ensuite le passer à cheerio pour faire l'éraflure. Le problème est que je ne sais pas comment récupérer le code HTML de l'objet document. Y at-il une propriété de la document qui rend le corps entier?

Voici ce que je suis en train de faire:

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

Avez-vous besoin tous les '' html' ou est document.body' suffisante? –

+0

Jusqu'à présent, j'ai juste besoin du corps @ R.A.Lucas –

+0

Est-ce que le retour de 'document.body' de la méthode' evaluate' fonctionne? –

Répondre

5

Avec cela a fonctionné:

document.body.innerHTML