gpt4 book ai didi

python - 使用 urllib2 和/或 wget 自动下载文件

转载 作者:行者123 更新时间:2023-11-28 22:46:16 29 4
gpt4 key购买 nike

我试图弄清楚如何从 zippy share 等网站托管网站下载文件。我看到这个帖子How to download in bash from zippyshare?这显示了如何使用 wget,并从浏览器手动添加 cookie 并将其添加到 wget 的 header 中。这样可行。但我想使用 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 重定向相同的行为。谢谢。

编辑:在此处使用请求是现在保留来自引用请求的 cookie 的代码,因为我正在使用 session 来发出请求……但仍然不行:查看 response.history 显示 302 重定向由于某种原因仍在发生。

import requests

downloadUrl="http://www67.zippyshare.com/d/3278160/42939/Andre%20Nazareth%20-%20Bella%20Notte%20%28Original%20Mix%29%20%5bquality-dance-music.com%5d.mp3"
referer= "http://www67.zippyshare.com/v/3278160/file.html"
header={"user-agent": "\"Mozilla/5.0 (Windows NT 6.0) Gecko/20100101 Firefox/14.0.1\"", 'referer': referer}
refererSession = requests.Session()
refererSession.get(referer)

downloadResponse = refererSession.get(downloadUrl, headers=header)
print downloadResponse.request.headers
print downloadResponse.status_code
if downloadResponse.status_code == 200:
mp3Name = "song2.mp3"
song = open(mp3Name, "wb")
song.write(downloadResponse.content)
song.close()

最佳答案

在没有其他选择的情况下,真的应该在 python 中使用系统调用。使用请求库,像这样:

import requests
header={"user-agent":\"Mozilla/5.0 (Windows NT 6.0) Gecko/20100101 Firefox/14.0.1\"",
'referer': referer}
cookies = dict(cookie_name='cookie_text')
r = requests.get(url, header=header, cookies=cookies)

如果它不起作用,则设置本身可能不适合您尝试执行的操作。我很困惑为什么你们都设置了 cookie 并在 wget 语句中设置了 cookies=off。

关于python - 使用 urllib2 和/或 wget 自动下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27664836/

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