gpt4 book ai didi

python - 如何检查 urllib2 是否遵循重定向?

转载 作者:太空狗 更新时间:2023-10-29 23:55:41 24 4
gpt4 key购买 nike

我写了这个函数:

def download_mp3(url,name):
opener1 = urllib2.build_opener()
page1 = opener1.open(url)
mp3 = page1.read()
filename = name+'.mp3'
fout = open(filename, 'wb')
fout.write(mp3)
fout.close()

此函数将 url 和名称都作为字符串。然后将从具有变量名称名称的 url 下载并保存 mp3。

网址的格式为 http://site/download.php?id=xxxx其中 xxxx 是 mp3 的 ID

如果此 ID 不存在,网站会将我重定向到另一个页面。

因此,问题是:我如何检查此 ID 是否存在?我试过检查 url 是否存在这样的函数:

def checkUrl(url):
p = urlparse(url)
conn = httplib.HTTPConnection(p.netloc)
conn.request('HEAD', p.path)
resp = conn.getresponse()
return resp.status < 400

但是好像不行..

谢谢

最佳答案

像这样,检查代码:

import urllib2, urllib

class NoRedirectHandler(urllib2.HTTPRedirectHandler):
def http_error_302(self, req, fp, code, msg, headers):
infourl = urllib.addinfourl(fp, headers, req.get_full_url())
infourl.status = code
infourl.code = code
return infourl
http_error_300 = http_error_302
http_error_301 = http_error_302
http_error_303 = http_error_302
http_error_307 = http_error_302

opener = urllib2.build_opener(NoRedirectHandler())
urllib2.install_opener(opener)
response = urllib2.urlopen('http://google.com')
if response.code in (300, 301, 302, 303, 307):
print('redirect')

关于python - 如何检查 urllib2 是否遵循重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8414563/

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