jquery - 如何使用节点刮刀单击页面中的“提交”按钮,然后检索它转到的页面
问题描述
我正在节点中构建一个刮板,但我被难住了。我去这个地址:https ://ariisp1.oklahomacounty.org/AssessorWP5/DefaultSearch.asp ,我想模拟将地址放在第二个文本框中并单击随后的“提交”按钮。我可以成功找到文本框和以下按钮,但我无法弄清楚如何模拟“点击”功能并检索它转到的 url。没有与该按钮关联的 href,因为它转到的 url 由输入的地址决定。有什么想法吗?
var request = require('request');
var cheerio = require('cheerio');
request.post('https://ariisp1.oklahomacounty.org/AssessorWP5/DefaultSearch.asp', /*{
form: {
FormattedLocation: '2333 Nw 32 St'
//btnSubmit: 'Submit'
}
}, */
function (err, res, body) {
let $ = cheerio.load(body);
$("input[name=FormattedLocation]").text('2331 nw 32 st');
var x = $("input[name=FormattedLocation]").text();
var y = $("input[name=FormattedLocation]").next().attr('type');
console.log(y);//successfully gets the 'Submit' button
//code to click button and get the page it goes to goes here
})
解决方案
你不需要用cheerio点击按钮,你需要做的是发出POST请求然后解析结果。目前尚不完全清楚您要对结果做什么,并且您的示例代码基本上已经在这样做了。困难的部分是您得到的表单响应是一团乱七八糟的 HTML,而且您还没有告诉我们您要从中提取什么。
request.post('https://ariisp1.oklahomacounty.org/AssessorWP5/AddressSearch.asp', { form: { FormattedLocation: '2333 Nw 32 St' }}, (err, res, body) => console.log(body));
如果您运行它,您将看到您的请求发生并返回 HTML,就好像您单击了相关的提交按钮一样。从那里开始,您对 Cheerio 所做的事情取决于您要从响应 HTML 中提取的内容。
推荐阅读
- tensorflow - 为什么我的 MNSIT 数字项目的每个预测都是错误的?
- c - 在没有 C/Linux 中的磁盘 I/O 的情况下在 linux 上的自己的进程上读取调试/静态符号?
- spring - 使用 Spring Security 对用户进行身份验证
- c# - 如何仅从 win 表单中的文本文件中提取数字?
- date - ssh连接的生命周期
- dns - 对网络解决方案的担忧 合并了不当的商业行为
- xpath - 使用 XPath 获取“位置:”背后的内容
- powershell - cmd.exe 抛出错误“& 在这个时候是意外的。”
- python-3.x - 如何在多处理中的两个单独脚本之间传输数据?
- java - 可调用布尔值的语法是什么