猿问

python从请求中获取url

我从 django 的 api 获取数据。数据来自另一个网站的订单。


数据还包括一个 url,例如,example.com但我无法验证输入,因为我无权访问订单。


我得到的网址也可以有不同的种类。更多示例:


example.de

http://example.de

www.example.com

https://example.de

http://www.example.de

https://www.example.de

现在我想打开网址以获取正确的网址。例如,如果我example.com在浏览器中打开,我得到了正确的 url http://example.com/,这就是我希望所有 url 的结果。


我怎样才能在python中快速做到这一点?


慕田峪9158850
浏览 225回答 1
1回答

幕布斯6054654

如果你status_code 200知道你有一个有效的地址。关于HTTPS://. 如果您不遵循本指南中的答案,您将收到 SSL 错误。一旦你有了它,程序就会为你找到正确的 URL。import requestsimport tracebackvalidProtocols = ["https://www.", "http://www.", "https://", "http://"]def removeAnyProtocol(url):    url = url.replace("www.","") # to remove any inputs containing just www since we aren't planning on using them regardless.    for protocol in validProtocols:        url = url.replace(protocol, "")    return urldef validateUrl(url):    for protocol in validProtocols:        if(protocol not in url):            pUrl = protocol + removeAnyProtocol(url)            try:                req = requests.head(pUrl, allow_redirects=True)                if req.status_code == 200:                    return pUrl                else:                    continue            except Exception:                print(traceback.format_exc())                continue        else:            try:                req = requests.head(url, allow_redirects=True)                if req.status_code == 200:                    return url            except Exception:                print(traceback.format_exc())                continue用法:correctUrl = validateUrl("google.com") # https://www.google.com
随时随地看视频慕课网APP

相关分类

Python
我要回答