在Python中获取HTTP GET变量

Blo*_*lia 5 python get http

我正在尝试在Python脚本中设置HTTP服务器.到目前为止,我从这里得到了自己工作的服务器,代码类似于下面的代码.

from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer

class MyHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        print("Just received a GET request")
        self.send_response(200)
        self.send_header("Content-type", "text/html")
        self.end_headers()

        self.wfile.write('Hello world')

        return

    def log_request(self, code=None, size=None):
        print('Request')

    def log_message(self, format, *args):
        print('Message')

if __name__ == "__main__":
    try:
        server = HTTPServer(('localhost', 80), MyHandler)
        print('Started http server')
        server.serve_forever()
    except KeyboardInterrupt:
        print('^C received, shutting down server')
        server.socket.close()
Run Code Online (Sandbox Code Playgroud)

但是,我需要从GET请求中获取变量,因此如果server.py?var1=hi需要,我需要将Python代码放入var1Python变量并对其进行处理(如打印它).我该怎么做?对Python专业人员来说可能是一个简单的问题,但是这个Python初学者不知道该怎么做!提前致谢!

sam*_*ias 7

导入urlparse并执行:

def do_GET(self):
    qs = {}
    path = self.path
    if '?' in path:
        path, tmp = path.split('?', 1)
        qs = urlparse.parse_qs(tmp)
    print path, qs
Run Code Online (Sandbox Code Playgroud)

  • 也可以将`parse_qs`应用于`urlparse(self.path).query`而不是手动拆分*path*. (4认同)

Ign*_*ams 5

urlparse.parse_qs()

print urlparse.parse_qs(os.environ['QUERY_STRING'])
Run Code Online (Sandbox Code Playgroud)

或者如果你关心订单或重复,urlparse.parse_qsl().

在Python 3中导入: from urllib.parse import urlparse

  • 刚检查了这个答案,我找不到BaseHTTPServer设置环境变量的位置.CGIHTTPServer可以. (2认同)