2012-09-27 12 views
5

python mechanizeを使用して、ファイルURLまたはファイル名がわからないときにExcelファイルをトリガーするaspnetForm submitControlからファイルを取得する方法を教えてください。 Excelファイルを使用してサイトのpython mechanize - ファイルダウンロードをトリガーするaspnetForm submitControlからファイルを取得する

URL:http://www.ncysaclassic.com/TTSchedules.aspx?tid=NCFL&year=2012&stid=NCFL&syear=2012&div=U11M01

私は印刷エクセル「ボタン」でダウンロードしたファイルを取得しようとしています。

これまでのところ、私が持っている:

r = br.open('http://www.ncysaclassic.com/TTSchedules.aspx?tid=NCFL&year=2012&stid=NCFL&syear=2012&div=U11M01') 
html = r.read() 

# Show the html title 
print br.title() 

# Show the available forms 
for f in br.forms(): 
    print f 

br.select_form('aspnetForm') 
print '\n\nSubmitting...\n' 
br.submit("ctl00$ContentPlaceHolder1$btnExtractSched") 

print 'Response...\n' 
print br.response().info() 
print br.response().read 

print 'still alive...\n' 

for prop, value in vars(br.response()).iteritems(): 
    print 'Property:', prop, ', Value: ', value 

print 'myfile...\n' 

myfile = br.response().read 

と私はこの出力を得る:

Submitting... 

    Response... 

Content-Type: application/vnd.ms-excel 
Last-Modified: Thu, 27 Sep 2012 20:19:10 GMT 
Accept-Ranges: bytes 
ETag: W/"6e27615aed9ccd1:0" 
Server: Microsoft-IIS/7.5 
X-Powered-By: ASP.NET 
Date: Thu, 27 Sep 2012 20:19:09 GMT 
Connection: close 
Content-Length: 691200 

<bound method response_seek_wrapper.read of <response_seek_wrapper at 0x2db5248L whose wrapped object = <closeable_response at 0x2e811c8L whose fp = <socket._fileobject object at 0x0000000002D79930>>>> 
still alive... 

Property: _headers , Value: Content-Type: application/vnd.ms-excel 
Last-Modified: Thu, 27 Sep 2012 20:19:10 GMT 
Accept-Ranges: bytes 
ETag: W/"6e27615aed9ccd1:0" 
Server: Microsoft-IIS/7.5 
X-Powered-By: ASP.NET 
Date: Thu, 27 Sep 2012 20:19:09 GMT 
Connection: close 
Content-Length: 691200 

Property: _seek_wrapper__read_complete_state , Value: [False] 
Property: _seek_wrapper__have_readline , Value: True 
Property: _seek_wrapper__is_closed_state , Value: [False] 
Property: _seek_wrapper__pos , Value: 0 
Property: wrapped , Value: <closeable_response at 0x2e811c8L whose fp = <socket._fileobject object at 0x0000000002D79930>> 
Property: _seek_wrapper__cache , Value: <cStringIO.StringO object at 0x0000000002E8B0D8> 

は、私は非常に近いだようだ... Content-Typeの注意:アプリケーション/ vnd.ms-Excelを

私は次に何をするべきか分かりません。私のファイルはどこにありますか?そして、後でアクセスできるように、ポインタをどのように取得してローカルに保存しますか?

アップデート:私は使用

DIR()...応答(属性)、その後、メソッドのカップルを試してみました/

print '\ndir(br.response())\n' 
for each in dir(br.response()): 
    print each 

print '\nresponse info...\n' 
print br.response().info() 

print '\nresponse geturl\n' 
print br.response().geturl() 

のメソッドのリストを取得するには、私はこれを取得します出力...

dir(br.response()) 

__copy__ 
__doc__ 
__getattr__ 
__init__ 
__iter__ 
__module__ 
__repr__ 
__setattr__ 
_headers 
_seek_wrapper__cache 
_seek_wrapper__have_readline 
_seek_wrapper__is_closed_state 
_seek_wrapper__pos 
_seek_wrapper__read_complete_state 
close 
get_data 
geturl 
info 
invariant 
next 
read 
readline 
readlines 
seek 
set_data 
tell 
wrapped 
xreadlines 

response info... 

Date: Thu, 27 Sep 2012 20:55:02 GMT 
ETag: W/"fa759b5df29ccd1:0" 
Server: Microsoft-IIS/7.5 
Connection: Close 
Content-Type: application/vnd.ms-excel 
X-Powered-By: ASP.NET 
Accept-Ranges: bytes 
Last-Modified: Thu, 27 Sep 2012 20:55:03 GMT 
Content-Length: 691200 


response geturl 

http://www.ncysaclassic.com/photos/pdftemp/ScheduleExcel165502.xls 

私はすでにこのファイルを私のbr.responseに入れていると思います。私はそれをどのように抽出するのか分からない!助けてください。私は近いそれはそうなってる

+0

... – hokie85

+0

これらの両方が私の仕事: 印刷 '\ nAttemptingファイル1を書くこと... \ n' の #このここのhttpを見つけました:// ( "/ path/to/someFile"、 "wb").write(urllib2.urlopen( "http:// http://www.wlllib2.urlopen.jp/wiki/%E3%83%A4%E3%83%A8%E3%83 ( "C:\ Users \ gregb \ Downloads \ download.xls"、 "wb")を開く(br.response()。read()) 印刷 '\ nファイル2を書き込もうとしています... \ n' open( "C:\ U srs \ gregb \ Downloads \ urllib2_urlopen.xls "、" wb ").write(urllib2.urlopen(" http://www.ncysaclassic.com/photos/pdftemp/ScheduleExcel172625.xls ").read()) – hokie85

答えて

3
# fill out the form 
response = br.submit() 
fileobj = open('filename', 'w+') 
fileobj.write(response.read()) 
fileobj.close() 
+0

ありがとう – hokie85

+0

これらのコメントに改行を入力できないのはなぜですか?私がするとき、私のコメントは私が終わる前に提出されます! – hokie85

+0

ヘルプで提案されている2つのスペースを試してみましょう – hokie85

関連する問題