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必須選擇城市從下拉菜單和提交請求,以便我可以從即將到來的網頁抓取數據。
解釋會有幫助,我用req.body和它的未來「未定義」 –
req.body保存從客戶端發送的參數作爲POST請求。資料來源:http://expressjs.com/api.html#req.body – superkytoz
我編輯了我的答案。您應該使用req.body.NAME_OF_YOUR_DROPDOWN_HERE,這樣您的下拉列表應該在html中具有名稱屬性。 – superkytoz