2015-06-14 46 views
5

Pracuję nad nodejs na złomowanie strony internetowej i jestem bardzo nowy dla nodejs.The strona początkowa jest popup, w którym należy wybrać opcję z selectbox i przesłać tylko później strony można przeglądać. To musi być zrobione po raz pierwszy, a następnie będzie przechowywane jako plik cookie do późniejszego wykorzystania.Wybierz opcję z listy rozwijanej i prześlij żądanie przy użyciu nodejs

Jestem w stanie uzyskać stronę HTML okienka popup, ale nie mogę wybrać opcji z pola wyboru i wysłać prośby.

Oto mój kod

var express = require('express'); 

var request=require('request'); 
var cheerio=require('cheerio'); 
var j = request.jar(); 
//var cookie = request.cookie(); 
j.setCookie("city_id=1; path=/; domain=.bigbasket.com", 'http://bigbasket.com/', function(error, cookie) { 
    //console.log("error"+error.message); 
    console.log("cookie "+cookie); 
}); 

var app=express(); 


app.get('/', function(req, res){ 
    console.log("hi"); 
    var sessionVal = req.session; 
    request({uri:'http://bigbasket.com/', 
    headers:{'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36' , 
      'content-type':'application/x-www-form-urlencoded; charset=UTF-8', 
      'connection':'keep-alive'}, 
       jar:j}, 
     function(err, response, body) { 
     // console.log("err "+err.message); 
     console.log("header"+JSON.stringify(response.headers)); 
     console.log("status"+response.statusCode); 
      console.log("cookie "+response.cookie); 

      console.log(body); 
      var $=cheerio.load(body,{xmlMode: true}); 
      console.log($); 
      var $selectBox= $('select').filter('.selectboxdiv'); 

      console.log($selectBox.text()); 

      response.end; 

    }); 


}); 
app.listen('8081') 
console.log('Magic happens on port 8081'); 
exports = module.exports = app; 

jestem w stanie uzyskać poprzez wybranie opcji pole poniżej kodu:

var $selectBox= $('select').filter('.selectboxdiv'); 

       console.log($selectBox.text()); 

Ale nie jestem w stanie wybrać odpowiednią opcję i submit.I trzeba wybrać miasto z menu rozwijanego i prześlij żądanie, aby umożliwić zbieranie danych z nadchodzących stron.

Odpowiedz

0

EDIT:

Co widzisz, jeśli używasz 'req.body.NAME_OF_YOUR_DROPDOWN_HERE'? Może wtedy zobaczysz wybraną opcję?

+0

Wyjaśnienie byłoby pomocne, użyłem polecenia req.body i jego nadchodzącego "niezdefiniowanego" –

+0

req.body posiada parametry, które zostały wysłane od klienta jako żądanie POST. Źródło: http://expressjs.com/api.html#req.body – superkytoz

+0

Edytowałem swoją odpowiedź. Powinieneś użyć polecenia req.body.NAME_OF_YOUR_DROPDOWN_HERE, aby twoje menu rozwijane miało atrybut name w html. – superkytoz