如何在python网页中获取当前URL?

时间:2013-01-22 22:01:55

标签: python web-applications

我是Python中的菜鸟。刚刚安装它,花了2个小时googleing如何获取在URL中发送到Python脚本的简单参数

找到this

非常有帮助,除了我无法在世界上任何事情找出如何替换

import urlparse
url = 'http://foo.appspot.com/abc?def=ghi'
parsed = urlparse.urlparse(url)
print urlparse.parse_qs(parsed.query)['def']

我将如何替换url ='string'以使其正常工作? 我只想访问http://site.com/test/test.py?param=abc并查看abc打印。


Alex回答后的最终代码:

url = os.environ["REQUEST_URI"] 
parsed = urlparse.urlparse(url) 
print urlparse.parse_qs(parsed.query)['param']

2 个答案:

答案 0 :(得分:7)

如果您没有任何库可以为您执行此操作,则可以从通过浏览器发送到脚本的HTTP请求构建当前URL。

您感兴趣的标题是Host以及HTTP方法之后的标题(在您的情况下可能是GET)。 Here are some more explanations(第一个链接似乎没问题,你可以免费使用谷歌了。)。

This answer向您展示了如何在CGI脚本中获取标题:

  

如果您作为CGI运行,则无法直接读取HTTP标头,   但是Web服务器将大部分信息放入环境中   变量给你。您可以从os.environ[]中选择它。

如果你这样做是为了练习,那就没关系了,因为你将会了解幕后的内容。如果您正在构建任何可重用的东西,我建议您使用库或框架,这样您就不会在每次需要时重新发明轮子。

答案 1 :(得分:0)

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

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

导入sys,os,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 == None):

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

SERVER_SOFTWARE