gpt4 book ai didi

javascript - 使用 CasperJS 、 PhantomJS 和回发进行抓取尝试

转载 作者:行者123 更新时间:2023-11-30 06:33:19 25 4
gpt4 key购买 nike

我正在尝试抓取使用 .aspx 文件或 ASP.net 的站点。有单选按钮,每次点击都会执行回发。

我现在知道 ASP.net 中的回发只是一个 POST 调用,但是有谁知道在 CasperJS 或 PhantomJS 中设置这个 POST 涉及什么?

我想它是这样的,但是我缺少复制回调的 POST。任何人都必须这样做并且可以提供一些见解,我们将不胜感激。

casper.start('target.aspx',function() {
this.capture('Step1.png');
this.test.assertExists('#ctl00_cphMainContent_ucUnifiedSearch_rdoOrg', 'PASS');
this.click('input[name="ctl00$cphMainContent$ucUnifiedSearch$rdoSearchBy"][value="rdoOrg"]');
});

casper.run(function() {
this.echo('finished');
this.capture('Step2.png');
});

具体的目标输入标签&回传是:

<input id="ctl00_cphMainContent_ucUnifiedSearch_rdoOrg" type="radio" name="ctl00$cphMainContent$ucUnifiedSearch$rdoSearchBy" value="rdoOrg" onclick="javascript:setTimeout('__doPostBack(\'ctl00$cphMainContent$ucUnifiedSearch$rdoOrg\',\'\')', 0)">

最佳答案

如您所说,页面对页面执行 POST 调用。这是通过 javascript 完成的,casperjs 不会将其作为到下一页的过渡。因此,最后一步 (run) 不会等待页面重新加载。您需要自己等待页面转换。

您可以通过等待仅存在于重新加载页面中的特定字段来执行此操作。在你的情况下,这将是

casper.waitForSelector('#ctl00_cphMainContent_ucUnifiedSearch_txtFirm');

所以生成的脚本是

casper.start('http://www.adviserinfo.sec.gov/IAPD/Content/Search/iapd_Search.aspx', function() {
this.capture('Step1.png');
this.click('input[name="ctl00$cphMainContent$ucUnifiedSearch$rdoSearchBy"][value="rdoOrg"]');
});

casper.waitForSelector('#ctl00_cphMainContent_ucUnifiedSearch_txtFirm');

casper.run(function() {
this.echo('finished');
this.capture('Step2.png');
});

关于javascript - 使用 CasperJS 、 PhantomJS 和回发进行抓取尝试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16164619/

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