Javascript 如何在Python中从ASP.net执行doPostBack?
这是我几天来一直在努力解决的问题。我正在尝试从网站自动下载文件,希望其他网站也有类似的结构。我知道该网站是ASP,我知道所有下载链接都调用doPostBack函数,其形式如下:Javascript 如何在Python中从ASP.net执行doPostBack?,javascript,python,asp.net,Javascript,Python,Asp.net,这是我几天来一直在努力解决的问题。我正在尝试从网站自动下载文件,希望其他网站也有类似的结构。我知道该网站是ASP,我知道所有下载链接都调用doPostBack函数,其形式如下: function __doPostBack(eventTarget, eventArgument) { if (!theForm.onsubmit || (theForm.onsubmit() != false)) { theForm.__EVENTTARGET.value = eventTarget; th
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
我尝试过通过selenium和phantomjs点击链接,但失败了。然后我决定尝试并模拟函数调用。为此,我使用了mechanize,并执行了以下操作:
def python_func(self,url,target,argument):
br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US;
rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3. 0.1')]
br.open(url)
form_num = 0
while True:
try:
inner_browser.select_form(nr=form_num)
except FormNotFoundError:
return False
br.form.set_all_readonly(False)
inner_browser["__EVENTTARGET"] = targ
inner_browser["__EVENTARGUMENT"] = arg
response = inner_browser.submit()
不幸的是,表单似乎没有提交控件,我从提交调用中什么也得不到。我还尝试通过手动编码ASP doPostBack的四个字段来模拟post请求。这些是eventtarget、eventargument、viewstate(具有默认值)和eventvalidaiton(也具有默认值)。这也不起作用——我最终又重新获得了金妮梅的网站
我假设我可以以某种方式使用doPostBack函数并直接使用JavaScript解释器运行它,但我不知道如何做到这一点。到目前为止,我已经有了mechanize、selenium和phantomJS为我工作,但我不确定是否可以利用它们来运行代码并下载文件