2016-05-31 61 views
1

我期待使用Python(2.7工作)形式后:显示网站在浏览器中提交使用Python

  1. 打开一个网站(特别是http://nunuku.caltech.edu/cgi-bin/getcssconedb_release_img.cgi)。
  2. 根据Python脚本在本地计算机上找到的字符串在该页面上输入表单数据。
  3. 在浏览器中显示结果页面。

我最初是在使用机械化,它适用于部件(1)和(2)的正常工作。但是,通过机械化,将得到的页面的HTML作为输出(下面代码中的content)。然后,我可以将该HTML写入本地文件并使用webbrowser.open()打开它,但是由于生成的页面具有javascript,因此无法正确显示(并且显示的内容不是或多或少都是查看此页面的全部内容第一名)。

有没有办法做第(3)部分?廉价的技巧将使用webbrowser.open()与最终的URL字符串(和我的本地数据插入),除了一旦按下“提交”按钮,URL根本不会改变。

相关的代码,因为它代表(包括保存的HTML到本地机器开放它的方式):

#!/usr/bin/env python 

import webbrowser 
import mechanize 

url = 'http://nunuku.caltech.edu/cgi-bin/getcssconedb_release_img.cgi' 
br = mechanize.Browser() 
br.open(url) 
br.select_form(nr = 0) 
br['RA'] = ra 
br['Dec'] = dec 
br['Rad'] = '0.1' 
br['IMG'] = ['nun'] # These are for the radio buttons. 
br['DB'] = ['photcat'] 
br['OUT'] = ['csv'] 
br['SHORT'] = ['short'] 
response = br.submit() 
content = response.read() 
with open('results.html', 'w') as f: 
    f.write(content) 
webbrowser.open('results.html') 

(在上面的br[]语句是页面上的表单标签,并radec变量是根据具体情况从我的文件中提取的值,例如,ra = 03:50:10.71dec = +32:32:29.60。如果您倾向于查看我正在尝试查看的内容,可以将其插入网站中。

任何和所有的建议表示赞赏!谢谢!

回答

2

正如我所看到的,您对显示具有值 的页面不感兴趣,而不仅仅是获取发送请求的数据。 你的想法并不差,但机械化,因为你看到没有使用任何实际的浏览器实例。机械化是

纲领性网页浏览

而且我猜你正在寻找的东西,如:

Python-Selenium

+0

我看看,谢谢。 – erekalper

+0

这是绝对要走的路。万分感谢! – erekalper