从下拉列表中选择选项并使用 nodejs 提交请求

Posted

技术标签:

【中文标题】从下拉列表中选择选项并使用 nodejs 提交请求【英文标题】:Select option from dropdown and submit request using nodejs 【发布时间】:2015-08-30 00:12:37 【问题描述】:

我正在使用 nodejs 来废弃一个网站,我对 nodejs 很陌生。网站初始页面是一个弹出窗口,必须从选择框中选择选项并提交,然后才能浏览以后的页面。这必须是第一次完成,然后将其存储为cookie以供以后使用。

我能够获取弹出窗口的 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());

但我无法选择该选项并提交。我必须从下拉菜单中选择城市并提交请求,以便我可以从即将到来的网页中抓取数据。

【问题讨论】:

【参考方案1】:

编辑:

如果您使用“req.body.NAME_OF_YOUR_DROPDOWN_HERE”,您会看到什么?或许你可以看到选择的选项呢?

【讨论】:

解释会很有帮助,我使用了 req.body 及其即将到来的“未定义” req.body 保存从客户端作为 POST 请求发送的参数。来源:expressjs.com/api.html#req.body 我已经编辑了我的答案。你应该使用 req.body.NAME_OF_YOUR_DROPDOWN_HERE 所以你的下拉列表应该在 html 中有一个 name 属性。

以上是关于从下拉列表中选择选项并使用 nodejs 提交请求的主要内容,如果未能解决你的问题,请参考以下文章

将值从第一个下拉列表提交到第二个下拉列表而不重新加载页面

从下拉列表中选择选项后,页面会自动滚动/移动

从 sql server 获取选定的值到 php 中的下拉列表

如何从下拉列表中选择并输入文本

如何在不使用提交的情况下从下拉列表中选择值

使用 Playwright for Python,如何从下拉列表中选择一个选项?