gpt4 book ai didi

ajax - 使用 node.js 处理 ajax 响应

转载 作者:太空宇宙 更新时间:2023-11-04 02:42:18 26 4
gpt4 key购买 nike

我正在尝试从指定网站抓取信息。该网站首先使用身份验证,因此我使用 zombie .js:

var Browser = require("zombie");
var browser = new Browser();
browser.visit("https://*****login.aspx", function(){
browser.fill('#user', '*****');
browser.fill('#pwd', '*****');
var button = browser.querySelector('#btnSubmit');
browser.fire('click', button, function(){
//scraping main.aspx
});
});

它正在工作,我可以抓取 main.aspx:有一个 <table> ,包含有关新消息的信息(发件人、日期、主题),问题就在这里:主题字段是可单击的,单击它会出现一个包含实际消息的新窗口。然而它是一个ajaxgrid,当我执行单击时:

var field = browser.querySelector('#VeryLongIdOfTheField');
browser.fire('click', field, function(){
console.log(browser.querySelector('#VeryLongIdOfTheFieldContainingTheMessage').innerHTML);
});

它返回一条错误消息,指出 undefined 没有innerHTML。我想这是因为这个 Action 使用了一些 ajax 魔法来处理。我是这个 js/nodejs/jquery/.. 世界的新手,需要一些帮助来启发我。

最佳答案

由于数据是使用异步 ajax 填充的,我猜测您的点击与 Node 内的实际 DOM 填充之间存在滞后。在检查 Node 内的内容之前稍等一下怎么样?

browser.fire('click', field, function(){
setTimeout(function(){
console.log(browser.querySelector('#VeryLongIdOfTheFieldContainingTheMessage').innerHTML);
}, 3000)
});

如果所花费的时间不太可预测,您也可以在循环内运行它,直到找到内容或在合理的重试次数后退出。

关于ajax - 使用 node.js 处理 ajax 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13193205/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com