为了账号安全,请及时绑定邮箱和手机立即绑定

python从请求中获取url

python从请求中获取url

慕田峪9158850 2022-07-12 18:36:27
我从 django 的 api 获取数据。数据来自另一个网站的订单。数据还包括一个 url,例如,example.com但我无法验证输入,因为我无权访问订单。我得到的网址也可以有不同的种类。更多示例:example.dehttp://example.dewww.example.comhttps://example.dehttp://www.example.dehttps://www.example.de现在我想打开网址以获取正确的网址。例如,如果我example.com在浏览器中打开,我得到了正确的 url http://example.com/,这就是我希望所有 url 的结果。我怎样才能在python中快速做到这一点?
查看完整描述

1 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

如果你status_code 200知道你有一个有效的地址。


关于HTTPS://. 如果您不遵循本指南中的答案,您将收到 SSL 错误。一旦你有了它,程序就会为你找到正确的 URL。


import requests

import traceback


validProtocols = ["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 url


def 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


查看完整回答
反对 回复 2022-07-12
  • 1 回答
  • 0 关注
  • 224 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信