2017-01-11 4 views
1

Das folgende ist die HTML, die ich mit anpacken möchte.Wie man Informationen in CasperJS einträgt

enter image description here

Ich möchte eine Abfrage erstellen und die Wetterberichte für diese Stadt sehen. Ich habe versucht, meine Codes:

var casper = require('casper').create(); 
var utils = require('utils'); 

casper.start('http://www.weather.com.cn/weather1d/101210101.shtml'); 
casper.waitForSelector('input', function() 
{ 
    this.fillXPath('div.search clearfix',{'//input[@id="txtZip"]':'shijiazhuang'},true); 
}); 
casper.then(function() 
{ 
    utils.dump(this.getTitle()); 
}); 
casper.run(); 

Es ist nicht das Web paeg Titel auf der Konsole gedruckt wurde. Ich habe es auch versucht:

casper.waitForSelector('input', function() 
{ 
    this.fillSelectors('div.search clearfix',{'input[id="txtZip"]':'shijiazhuang'},true); 
}); 
} 
); 

Ich habe keine Webseite Titel auch bekommen. Ich wurde ziemlich verwirrt und tat nicht, was ich falsch gemacht hatte. Außerdem scheint es, dass this.fill Methode nur tackles mit Namensattributen, um Informationen auf CasperJS offizielle Website zu posten. Ich brauche deine Hilfe.

Antwort

1

CasperJS Skript:

var casper = require('casper').create(), utils = require('utils'); 
    casper 

.start('http://www.weather.com.cn/weather1d/101210101.shtml',function(){ 
    this 
     .wait(3000,function(){ 
    this.capture('search.png'); 
    utils.dump(this.getTitle()); 
}) 
     .evaluate(function(){ 
      document.getElementById('txtZip').value='shijiazhuang'; 
      document.querySelector('input[type="button"]').click(); 
     }) 
}) 
    .run(); 

Ergebnis:

„【石家庄 天气】 石家庄 今天 天气预报, 今天, 今天 天气, 7 天, 15 天 天气预报, 天气预报 一周,天气预报 15 天 查询

search.png

0

Sie tun es richtig, Sie müssen nur Ihr Skript ein wenig ändern.
Ändern Sie einfach den Selektor des Eingabefeldes das tatsächliche scheint nicht zu funktionieren, dann sollten Sie das richtige Ergebnis erhalten.
"this.fillXPath" füllt nur das Formular aus und postet es nicht.

... 
// fill the form 
casper.waitForSelector('input', function() { 
    this.fillXPath('#txtZip', { 
     '//input[@id="txtZip"]': 'shijiazhuang' 
    }, true); 
}); 
// trigger - post the form 
casper.then(function() { 
    this.click('#btnZip'); 
}); 
// i can't speak chinese - wait for some specific change on this page 
casper.wait(5000); 
// take a screenshot of it 
casper.then(function() { 
    this.capture("shijiazhuang_weather.png"); 
}); 
... 
Verwandte Themen