【问题标题】:Get current URL in Python在 Python 中获取当前 URL
【发布时间】:2010-05-04 10:47:42
【问题描述】:

如何使用 Python 获取当前 URL,

我需要获取当前 URL,以便检查它的查询字符串,例如

requested_url = "URL_HERE"

url = urlparse(requested_url)

if url[4]:
    params = dict([part.split('=') for part in url[4].split('&')])

这也在 Google App Engine 中运行

【问题讨论】:

    标签: python google-app-engine


    【解决方案1】:

    试试这个:

    self.request.url
    

    另外,如果您只需要查询字符串,这将起作用:

    self.request.query_string
    

    最后,如果您知道要查找的查询字符串变量,您可以这样做:

    self.request.get("name-of-querystring-variable")
    

    【讨论】:

    • 显示此错误:NameError: name 'self' is not defined
    【解决方案2】:

    对于任何通过谷歌找到这个的人,

    我想通了,

    您可以使用以下方法获取当前请求的查询字符串:

    url_get = self.request.GET
    

    这是您的查询字符串的 UnicodeMultiDict!

    【讨论】:

    • 是的,一般来说你希望使用框架提供的工具,而不是手动解析 URL;这是一个已解决的问题。
    【解决方案3】:

    我无法得到其他答案,但以下是对我有用的方法:

        url = os.environ['HTTP_HOST']
        uri = os.environ['REQUEST_URI']
        return url + uri
    

    【讨论】:

      【解决方案4】:

      试试这个

      import os
      url = os.environ['HTTP_HOST']
      

      【讨论】:

      • 这似乎忽略了任何查询字符串,因为它只获取主机 URL: ParseResult(scheme='localhost', netloc='', path='8080', params='', query=' ', 片段='')
      【解决方案5】:

      这就是我在 Python 3 中从 CGI (A) URL、(B) GET 参数和 (C) POST 数据中捕获的方式:

      ================================================ ========

      导入系统、操作系统、io

      捕获网址

      myDomainSelf = os.environ.get('SERVER_NAME')

      myPathSelf = os.environ.get('PATH_INFO')

      myURLSelf = myDomainSelf + myPathSelf

      捕获获取数据

      myQuerySelf = os.environ.get('QUERY_STRING')

      捕获发布数据

      myTotalBytesStr=(os.environ.get('HTTP_CONTENT_LENGTH'))

      如果(myTotalBytesStr == 无):

      myJSONStr = '{"error": {"value": true, "message": "No (post) data received"}}'
      

      其他:

      myTotalBytes=int(os.environ.get('HTTP_CONTENT_LENGTH'))
      
      myPostDataRaw = io.open(sys.stdin.fileno(),"rb").read(myTotalBytes)
      
      myPostData = myPostDataRaw.decode("utf-8")
      

      将 RAW 写入文件

      mySpy = "myURLSelf: [" + str(myURLSelf) + "]\n"

      mySpy = mySpy + "myQuerySelf: [" + str(myQuerySelf) + "]\n"

      mySpy = mySpy + "myPostData: [" + str(myPostData) + "]\n"

      你需要在这里定义自己的myPath

      myFilename = "spy.txt"

      myFilePath = myPath + "\" + myFilename

      myFile = open(myFilePath, "w")

      myFile.write(mySpy)

      myFile.close()

      ================================================ ========

      这里有一些其他有用的 CGI 环境变量:

      AUTH_TYPE

      CONTENT_LENGTH

      CONTENT_TYPE

      GATEWAY_INTERFACE

      PATH_INFO

      PATH_TRANSLATED

      QUERY_STRING

      REMOTE_ADDR

      REMOTE_HOST

      REMOTE_IDENT

      REMOTE_USER

      REQUEST_METHOD

      SCRIPT_NAME

      SERVER_NAME

      SERVER_PORT

      SERVER_PROTOCOL

      服务器软件

      =============================================

      我正在使用这些方法在 Windows Server 上通过 MIIS 运行 Python 3。

      希望对你有帮助。

      【讨论】:

        【解决方案6】:

        requests 模块有 'url' 属性,即更改的 url。
        试试这个:

        import requests
        current_url=requests.get("some url").url
        print(current_url)
        

        【讨论】:

        • 嗨,欢迎来到 SO。感谢您的回答,但这并不能真正解决问题。这将如何帮助从作为主要问题的 URL 中提取查询字符串。
        【解决方案7】:

        如果你的 python 脚本是服务器端的:

        你可以使用操作系统

            import os
            url = os.environ
            print(url)
        

        这样,您将看到 os.environ 为您提供的所有数据。看起来您需要“QUERY_STRING”。像任何 JSON 对象一样,您可以像这样获取数据。

            import os
            url = os.environ['QUERY_STRING']
            print(url)
        

        如果您想要一个真正优雅的可扩展解决方案,您可以随时随地使用,您可以将变量保存到字典中(此处命名为 vars),如下所示:

            vars={}
            splits=os.environ['QUERY_STRING'].split('&')
            for x in splits:
                name,value=x.split('=')
                vars[name]=value
        
            print(vars)
        

        如果您是客户端,则任何其他涉及 get 请求的响应都将起作用

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-05-16
          • 2019-07-19
          • 2013-04-05
          • 2020-04-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多