【发布时间】:2018-01-09 00:13:12
【问题描述】:
我想提交一个 multipart/form-data 来设置TRILEGAL 上的模拟输入,并从重定向页面下载可用的文件。
我研究了请求、urllib、Grab、mechanize 等的文档,似乎在 mechanize 中我的代码是:
from mechanize import Browser
browser = Browser()
browser.open("http://stev.oapd.inaf.it/cgi-bin/trilegal")
browser.select_form(nr=0)
browser['gal_coord'] = ["2"]
browser['eq_alpha'] = ["277.981111"]
browser['eq_delta'] = ["-19.0833"]
response = browser.submit()
content = response.read()
但是,我无法测试它,因为它在 python 3 中不可用。
所以我尝试了请求:
import requests
url = 'http://stev.oapd.inaf.it/cgi-bin/trilegal'
values = {'gal_coord':"2",
'eq_alpha':"277.981111",
'eq_delta':"-19.0833",
'field':" 0.047117",
}
r = requests.post(url, files = values)
但我不知道如何进入结果页面 - 如果我这样做了
r.content
它显示我刚刚提交的表单的内容,而如果您打开实际的website,然后单击“提交”,您会看到一个新窗口(在 method="post" action="./ trilegal_1.6" )。
我怎样才能进入带有请求的新窗口(即,点击提交按钮时打开的页面),然后单击结果页面上的链接以检索结果文件(“结果将可用在此链接大约 2 分钟后。”)?
如果您能指出任何其他可以完成这项工作的工具,我将不胜感激 - 我花了几个小时在 SO 中寻找可以帮助解决这个问题的东西。
谢谢!
克里斯
【问题讨论】:
-
您需要打开该链接才能从文件中获取数据
-
嗨!但是什么链接?如果我打开 stev.oapd.inaf.it/cgi-bin/trilegal_1.6 它会打开输入,而不是结果页面......
-
对,在那个页面你必须在 2 分钟后打开这个链接
-
每次提交表单时都会生成一个新链接。我怎样才能知道链接是什么?
-
链接存在于
page source
标签: python python-requests mechanize forms robobrowser