1

私のプログラムは、ユーザー入力を受け取り、特定の Web ページを検索します。さらに、特定のリンクをクリックして、そこにあるファイルをダウンロードしたいと考えています。

例 :

  1. ウェブページ : http://www.rcsb.org/pdb/home/home.do
  2. 検索ワード:「1AW0」
  3. Web サイトで単語を検索すると、次のページに移動します: http://www.rcsb.org/pdb/explore/explore.do?structureId=1AW0

プログラムをウェブページの右側に移動し、DOWNLOAD FILESオプションから pdb ファイルをダウンロードします。

mechanize モジュールを使用して単語を自動的に検索するプログラムを作成できましたが、リンクをクリックする方法が見つかりませんでした

私のコード:

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 モジュールを学習してこの作業を試みています。

前もって感謝します

4

1 に答える 1

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.pdbとともに。1AW0.xml

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

于 2012-12-09T10:18:37.333 に答える