我如何编写一个程序来点击Python中的特定链接

时间:2012-12-09 03:37:13

标签: python python-2.7 wxpython mechanize jython

我的程序接受用户输入并通过特定网页进行搜索。此外,我希望它去点击特定的链接,然后下载那里的文件。

示例:

  1. 网页:http://www.rcsb.org/pdb/home/home.do
  2. 搜索词:“1AW0”
  3. 在网站上搜索单词后,您需要: http://www.rcsb.org/pdb/explore/explore.do?structureId=1AW0
  4. 我希望该程序位于网页的右侧,并从下载文件选项下载pdb文件

    我设法使用机械化模块编写程序来自动搜索单词,但无法找到我可以点击链接的方式

    我的代码:

    import urllib2
    import re
    import mechanize
    
    br = mechanize.Browser()
    br.open("http://www.rcsb.org/pdb/home/home.do")
    ## name of the form that holds the search text area 
    br.select_form("headerQueryForm")
    
    ## "q" name of the teaxtarea in the html script
    br["q"] = str("1AW0")
    response = br.submit()
    print response.read() 
    

    任何帮助或任何建议都会有所帮助。

    顺便说一下,我是Python的中级程序员,我正在尝试学习Jython模块以尝试使其工作。

    提前致谢

1 个答案:

答案 0 :(得分:1)

我将如何做到这一点:

'''
Created on Dec 9, 2012

@author: Daniel Ng
'''

import urllib

def fetch_structure(structureid, filetype='pdb'):
  download_url = 'http://www.rcsb.org/pdb/download/downloadFile.do?fileFormat=%s&compression=NO&structureId=%s'
  filetypes = ['pdb','cif','xml']
  if (filetype not in filetypes):
    print "Invalid filetype...", filetype
  else:
    try:
      urllib.urlretrieve(download_url % (filetype,structureid), '%s.%s' % (structureid,filetype))
    except Exception, e:
      print "Download failed...", e
    else:
      print "Saved to", '%s.%s' % (structureid,filetype)

if __name__ == "__main__":
  fetch_structure('1AW0')
  fetch_structure('1AW0', filetype='xml')
  fetch_structure('1AW0', filetype='png')

提供此输出:

Saved to 1AW0.pdb
Saved to 1AW0.xml
Invalid filetype... png

同时保存到脚本目录的2个文件1AW0.pdb1AW0.xml(对于此示例)。

http://docs.python.org/2/library/urllib.html#urllib.urlretrieve