使用POST方法和Python下载文件

2 投票
1 回答
3145 浏览
提问于 2025-04-15 11:37

我需要一点帮助,让我能从一个网站下载一个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() 是一个简单的函数,它可以从一个像文件的对象中读取数据,然后把这些数据写入另一个地方。

撰写回答