【发布时间】:2012-05-11 12:10:26
【问题描述】:
我正在尝试抓取一个网页以进行工作,其中有数百个带有复选框的表格行,并提交我需要单击一个调用 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;"> Resend </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>
【问题讨论】:
-
您需要检查点击 JS 按钮 实际 做了什么,然后只需创建该过程的副本。
-
我知道 jQuery 没有被提及,并且可能不适合这里,但这可能会很有趣:api.jquery.com/trigger
-
@Petah 我用方法更新了第一篇文章,我忘了包括它。不过,我不确定如何从漂亮的汤之类的东西中复制它的作用。
-
@FirehaK 我的意思是它在 HTTP 协议/请求方面的实际作用。欺骗 HTTP 请求很容易,你只需要知道你需要欺骗什么。
标签: javascript screen-scraping