2011-04-29 65 views
0

我是Python中的新手。我需要编写一个python脚本来解析apache的请求url并从中找到一些数据。如何运行和检查在Python中运行

脚本是:

#!/usr/bin/python 

import sys 
import re 

for line in sys.stdin: 
    ipAddress = re.search('ipAddress=([^&]*)', line) 
    key = re.search('key=([^&]*)', line) 
    if len(ipAddress.group(1)) != 0 and len(key.group(1)) != 0: 
     print "%s\t%s" % (ipAddress.group(1), key.group(1)) 

请告诉我什么是脚本错误,以及如何与输入测试它是这样的:

GET request?key=xxxxxxxxxx&ipAddress=000.000.000.00&id=blah... HTTP/1.1 
+0

您是否尝试过调试它?或者甚至只是在Python控制台中执行一些代码来查看会发生什么? – 2011-04-29 11:22:15

+0

您需要在此提供更多信息。我执行了这个脚本,粘贴在你的例子中,并得到了输出。很明显,代码发布的作品,但可能不是预期的。你能告诉我们你看到了什么,以及你的期望? – 2011-04-29 11:25:04

+0

什么是使用urlparse模块的问题。 – 2011-04-29 11:28:32

回答

0

您还没有指定什么样的错误你”重新获得,并且您的代码不会为我生成任何错误,但是我可以看到一些可能会导致代码不良的情况。

首先,你只是想要的网址,而不是方法和HTTP版本(这可能会导致一些问题,如果ip地址或关键是最后的字段),所以你应该在解析之前分割线:

method, url, version = line.split(' ') 

其次,如果url不包含keyipAddress字段,则您的获得错误,因为您的匹配检查代码有问题。您应该使用此代码代替:

for line in sys.stdin: 
    method, url, version = line.split(' ') 
    ipAddress = re.search('ipAddress=([^&]*)', url) 
    key = re.search('key=([^&]*)', url) 
    if ipAddress and key: 
     print "%s\t%s" % (ipAddress.group(1), key.group(1))