1

我正在尝试抓取一个网页以进行工作,其中有数百个带有复选框的表格行,并提交我需要单击一个调用 javascript 函数的按钮的表单。html 中的按钮如下所示:

<a onclick="JavaScript: return verifyChecked('Resend the selected request for various approvals?');"
id="_ctl0_cphMain_lbtnReapprove"
title="Click a single request to send to relevant managers for reapproval."
class="lnkDBD" href="javascript:__doPostBack('_ctl0$cphMain$lbtnReapprove','')"
style="border-color:#0077D4;border-width:1px;border-style:Solid;text-decoration: overline;">&nbsp;Resend&nbsp;</a>

我知道对于美丽汤之类的库,您可以通过将帖子数据添加到 url 来提交表单,但是我如何选中复选框并“单击”这个 javascript 按钮?该网站是各种各样的帮助台,对于这个特定的按钮,我们一次只能检查一个请求,当有数百个请求需要重新提交时,这会花费很长时间。

当我选中复选框时,还会弹出一条消息,验证我想要这样做,我不知道这是否会影响以编程方式提交它。

编辑:我忘了包括 doPostBack 方法。

<script type="text/javascript"> 
<!--
var theForm = document.forms['aspnetForm'];
if (!theForm) {
    theForm = document.aspnetForm;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
// -->
</script>
4

3 回答 3

2

获取 Firefox 和Firebug,打开Firebug加载页面,然后在控制台选项卡中查看它实际发送到服务器的内容。

然后只需使用您喜欢的任何工具重复发送的内容。

在此处输入图像描述

于 2012-05-02T01:45:57.560 回答
2

你可能最好使用像 selenium 这样的浏览器自动化库来做这样的事情。

于 2012-05-05T08:54:08.040 回答
1

尝试 Imacros。对于简单的浏览器自动化来说,它非常棒。您可以记录您的会话,并以此为基础编写代码。如果有更多的逻辑,非复杂文档中的标准编程可以让你走得更快。您也可以调用外部语言/脚本。例如,我将其用于一些项目:

1) 收集业务线索:一个站点有一个所有零售商店的列表,但不会将它们全部提供给用户输入的邮政编码。在电子表格中放置大量邮政编码,当运行时,将从 csv 中遍历每个邮政编码并抓取信息以存储在 csv 文件中。每 5 分钟会在 pc 上打开 VPN 程序并更改 ip。拿。20分钟制作。

我会安排你的编程然后好的,但我发现这是最好的方法,因为如果站点发生更改,它更容易调试,它们的“代码”非常简单,你可以轻松调用其他脚本和文件。Firefox 插件是最稳定和免费的。

于 2012-05-06T13:56:23.597 回答