私は、次のURLからCSVファイルをダウンロードしようとしているナットを運転しています:Pythonのダウンロードファイル:urllib2のClientForm
あり、ウェブサイトでの4つのフォームがあり、私は右のフォームに日付を設定するために管理、私はそのフォームを投稿し、私は適切なhtmlでhttpの応答を取得します。しかし、私は実際に応答のhtmlではなくcsvをダウンロードしたいと思います。私は2つの書式、最初の日付、そしてcsvの選択の後に提出しなければならないと思ったが、1回目の返答で私は対話する形を得られなかった。最初のフォーム(日付ピッカー)が[1]の形のアレイで形成すること
#!/usr/bin/env python
import csv
from urllib2 import urlopen
from ClientForm import ParseResponse
import urllib2
proxy = urllib2.ProxyHandler({'http': '172.26.10.100:8080'})
# proxy = urllib2.ProxyHandler({})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/2010010' \
'1 Firefox/4.0.1',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language':'en-us,en;q=0.5',
'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.7'}
# set the request
url = "http://www.opcom.ro/rapoarte/raportPIPsiVolumTranzactionat.php?lang=en"
request = urllib2.Request(url, None, headers)
try:
response = urllib2.urlopen(request)
except urllib2.HTTPError, response:
pass
print response.geturl()
print response.info() # headers
# print response.read() # body
# get forms from response
forms = ParseResponse(response, backwards_compat=False)
response.close()
# print "###FORMS: " ,len(forms)
# for i in range(len(forms)):
# print "@@@@@"
# print forms[i]
form1 = forms[1]
# setting a specific date in the form
form1.set_value("7", kind="text", nr=0)
form1.set_value("10", kind="text", nr=2)
form1.set_value("2011", kind="text", nr=4)
print form1
# # # SEND THE FORM
request2 = forms[1].click() # urllib2.Request object BIEN
try:
response2 = urllib2.urlopen(request2)
except urllib2.HTTPError, response2:
pass
print response2.geturl()
print response2.info() # headers
# print response2.read() # body
with open('salida.txt', 'w') as f:
f.write(response2.read())
forms2 = ParseResponse(response2, backwards_compat=False)
response2.close()
print "###FORMS 2: " ,len(forms2)
注意:
はここに私のコードです。フォーム[2]は、CSVファイルまたはXMLの選択ボックスです。
# form2 = forms2[2]
# # Select CSV file in selection control
# form2.find_control("menu_sari").items[1].selected = True # check
しかし、応答の後、私はこのフォームを得ることはありませんので、私はそれをコメント:CSVを選択するためのコードです。
ご協力いただきありがとうございます。
あなたはこのようなことのためにmechanizeを見ましたか? http://pypi.python.org/pypi/mechanize –
私はClientFormのウェブサイトに行って、これを発見しました:「このモジュールによって提供されるこの機能は、今や機械化の一部です。私はClientFormのスタンドアロン版をさらにリリースするつもりはありません。それでも、私はそれが両方で行うことができると思うが、それはCSVを取得しないので、私は間違って何かをしている – user1145469