使用urllib2和或wg自动下载文件

2024-04-26 00:56:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道如何从像zippy share这样的网站上下载文件。我看到了这篇文章How to download in bash from zippyshare?,它展示了如何使用wget,并从浏览器手动添加cookie并将其添加到wget的头中。这很管用。但是我想使用python,获取cookie,然后执行wget,这样我就可以通过编程来完成这项工作(例如:抓取一堆下载链接)。在

我设计了这个hacky脚本来获取cookie并执行wget命令,但是看起来cookie并不好,因为我得到了302重定向:

import urllib2, os
class HeadRequest(urllib2.Request):
    def get_method(self):
        return "HEAD"

url = "http://www67.zippyshare.com/d/64003087/2432/Alex%20Henning%2c%20Laurie%20Webb%20-%20In%20Your%20Arms%20%28Joy%20Kitikonti%20Remix%29%20%5bquality-dance-music.com%5d.mp3"
referer = "http://www67.zippyshare.com/v/64003087/file.html"
response = urllib2.urlopen(HeadRequest(url))

headers = response.info()
jcookieString = headers['Set-Cookie'].split(';')[0] #[11:]
# print headers
print "jcookie string " + jcookieString

wgetString = "wget " + url + " --referer=" + referer + " --cookies=off --header \"Cookie: " + jcookieString + "\"" + "--user-agent=\"Mozilla/5.0 (Windows NT 6.0) Gecko/20100101 Firefox/14.0.1\""
os.system(wgetString)

我也尝试使用python的cookielib,但是得到了相同的302重定向行为。谢谢。在

编辑:这里的using requests是保存来自referer请求的cookie的代码,因为我正在使用会话来发出请求…但是仍然没有成功: 看着响应历史记录显示302重定向由于某种原因仍在发生。在

^{pr2}$

Tags: comhttpurloscookieresponseurllib2wget
1条回答
网友
1楼 · 发布于 2024-04-26 00:56:30

实际上,在没有其他选择的情况下,应该使用python内部的系统调用。使用请求库,如下所示:

^{1}$

如果它不起作用,也许设置本身不适合您正在尝试的操作。我很困惑为什么在wget语句中都设置cookie和have cookies=off。在

相关问题 更多 >