2011-04-29 63 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))