2015-06-14 81 views
5

我正在使用nodejs來刪除一個網站,而且我對nodejs非常陌生。網站的首頁是一個彈出窗口,其中必須從selectbox中選擇選項,然後才提交頁面可以被瀏覽。這必須首次完成,然後它將被存儲爲cookie以供以後使用。從下拉菜單中選擇選項並使用nodejs提交請求

我能夠獲得HTML頁面的彈出窗口,但我無法從選擇框中選擇選項並提交請求。

這裏是我的代碼

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; 

我能夠通過獲得下面的代碼選擇框選項:

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

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

但我不能夠選擇該選項並submit.I必須選擇城市從下拉菜單和提交請求,以便我可以從即將到來的網頁抓取數據。

回答

0

編輯:

你看到了什麼,如果你使用 'req.body.NAME_OF_YOUR_DROPDOWN_HERE'?也許你可以看到選擇的選項呢?

+0

解釋會有幫助,我用req.body和它的未來「未定義」 –

+0

req.body保存從客戶端發送的參數作爲POST請求。資料來源:http://expressjs.com/api.html#req.body – superkytoz

+0

我編輯了我的答案。您應該使用req.body.NAME_OF_YOUR_DROPDOWN_HERE,這樣您的下拉列表應該在html中具有名稱屬性。 – superkytoz