gpt4 book ai didi

python - 通过 Post 表单下载文件

转载 作者:太空狗 更新时间:2023-10-30 02:21:31 25 4
gpt4 key购买 nike

有一个网站有我要下载的文件列表。为了简化这个过程,我尝试编写一个脚本来为我做这件事。 (虽然我可以同时选择多个选项,但点击提交只会下载第一个文件)

网页url webpage/list.php 与表单中的操作不同。我不确定在此处发布实际网址的政策是什么。

<form action="webpage/data.php" method="post">
<table align="center">
<tbody>
<tr><td>
<select name="data[]" size="8" multiple="multiple">
<option value="downloadable_file1.tar">Downloadable file1</option>
<option value="downloadable_file2.tar">Downloadable file2</option>
<option value="downloadable_file3.tar">Downloadable file3</option>
</select>
</td></tr>
</tbody>
</table>
<input type="submit">
</form>

我的脚本是这样的:

import urllib
import urllib2
import shutil

req = urllib2.Request('webpage/list.php')
values = { 'data[]': 'downloadable_file1.tar'}
req.add_data(urllib.urlencode(values))
resp = urllib2.urlopen(req)

myfile = open('downloadable_file1.tar', 'wb')
shutil.copyfileobj(resp.fp, myfile)
myfile.close()

当运行脚本时,服务器似乎没有确认请求,只是为我提供带有文件列表的同一网页。我缺少一个选项吗?可能有一些重定向问题?

这是我在使用 Chrome 时得到的信息:

Request URL:webpage/data.php  
Request Method:POST
Status Code:200 OK

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:sv-SE,sv;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:26
Content-Type:application/x-www-form-urlencoded
Host:webpage
Origin:webpage
Referer:webpage/list.php
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22
data[]:downloadable_file1.tar

Accept-Ranges:bytes
Cache-control:private
Connection:Keep-Alive
Content-Disposition:attachment; filename="downloadable_file1.tar.gz"
Content-Length:1043436
Content-Transfer-Encoding:binary
Content-Type:application/x-gzip
Date:Tue, 26 Mar 2013 20:18:58 GMT
Expires:Mon, 26 Jul 1997 05:00:00 GMT
Keep-Alive:timeout=5, max=100
Pragma:private
Server:Apache/2.2.9 (FreeBSD) mod_ssl/2.2.9 OpenSSL/0.9.7e-p1 DAV/2 PHP/5.2.6 with Suhosin-Patch
X-Powered-By:PHP/5.2.6

最佳答案

您应该考虑使用“请求”库:http://docs.python-requests.org/en/latest/

我相信使用请求库可以像这样完成:

data={'data[]':'downloadable_file1.tar'}
req = requests.post('webpage/data.php', data)
with open('file.data', 'wb') as file:
file.write(req.content)

关于python - 通过 Post 表单下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15646813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com