使用Python

时间:2016-05-31 17:44:16

标签: python python-2.7 mechanize

我希望使用Python(在2.7中工作)来:

  1. 开设网站(特别是http://nunuku.caltech.edu/cgi-bin/getcssconedb_release_img.cgi)。
  2. 根据Python脚本在本地计算机上找到的字符串在该页面上输入表单数据。
  3. 在浏览器中显示结果页面。
  4. 我最初看的是使用机械化,它适用于零件(1)和(2)。但是,使用mechanize,可以将生成的页面的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。您可以将这些插入网站 - 如果您非常愿意 - 看看我想看到的内容。)

    感谢所有建议!谢谢!

1 个答案:

答案 0 :(得分:2)

我可以看到你有兴趣显示带有值的页面 不只是获取发送请求的数据。 你的想法不是很糟糕,但机械化你所看到的并不是使用任何实际的浏览器实例。机械化是

  

程序化网页浏览

我猜你正在寻找类似的东西:

  

Python-Selenium