使用POST方法和Python下载文件
我需要一点帮助,让我能从一个网站下载一个tar文件。这个网站是一个表单,你可以选择想要的文件,然后点击提交,接着就会弹出下载窗口让你选择保存的位置。
我想用代码实现同样的功能(这样我就不用手动选择每个文件了)。到目前为止,我已经让Python 2.5.2返回了一个响应,但它是以socket._fileobject
的形式出现的,我现在不太确定怎么把它转换成我电脑上的文件。
下面是Python命令行的输出和我采取的步骤:
Python 2.5.2 on win32
IDLE 1.2.2
>>> import urllib
>>> import urllib2
>>> url = 'http://website/getdata.php'
>>> values = {'data[]': 'filex.tar'}
>>> data = urllib.urlencode(values)
>>> req = urllib2.Request(url,data)
>>> response = urllib2.urlopen(req)
>>> response
addinfourl at 22250280 whose fp = <socket._fileobject object at 0x01534570
>>> response.fp
socket._fileobject object at 0x01534570
1 个回答
2
添加这个:
myfile = open('myfile.tar', 'wb')
shutil.copyfileobj(response.fp, myfile)
myfile.close()
response.fp
是一个像文件一样的对象,你可以像打开文件那样从中读取内容。shutil.copyfileobj()
是一个简单的函数,它可以从一个像文件的对象中读取数据,然后把这些数据写入另一个地方。