Javascript 如何在Python中从ASP.net执行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

这是我几天来一直在努力解决的问题。我正在尝试从网站自动下载文件,希望其他网站也有类似的结构。我知道该网站是ASP,我知道所有下载链接都调用doPostBack函数,其形式如下:

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为我工作,但我不确定是否可以利用它们来运行代码并下载文件