2012-10-09 55 views
0

下面是日誌文件的一行:如何解析日誌文件使用python,並輸出html?

41.42.50.xxx - - [09/Oct/2012:00:00:01 +0200] "GET http://www.xxxxxx.com/solutions-ar/solutions-1466.php HTTP/1.1" 200 10 "http://www.google.com.eg/url?dfasdfeaefdf" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4" 

我要解析IP地址,時間,網址,谷歌的網址和瀏覽器,以單行, 我使用(r'^(((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?))')相匹配的IP地址,我怎麼能獲取其他信息並輸出html? 謝謝

+0

這個正則表達式真的太偏執了......'^(?:\ d + \。){3} \ d +'應該沒問題。 – nneonneo

+0

謝謝,我會改進它,但我如何解析其他信息的其餘部分? –

+0

你有沒有其他日誌行的例子?會幫助像日期等事情 - 這個月會一直是三個字母嗎?還有其他的東西會在'[]'裏面嗎? – jdotjdot

回答

2
  • IP地址:r'^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'
  • 時間:r'\d{2}/[a-zA-Z]{3}/\d{4}:\d{2}:\d{2}:\d{2} \+\d{4}'
  • 時間(備用):r'(?<=\[).+?(?=\])',懶惰,假設日期將永遠是裏面[]只有日期將永遠是裏面[]
  • 網址: r'https?://.+?(?= HTTP)'
  • Google URL:r'(?<=")https?://.*?google\..*?(?=")'
  • 瀏覽器:r'(?<=")Mozilla.+?(?=")'

然而,隨着nneonneo指出,使用像apachelog工具將會有很多更強大和可靠的。

+0

非常感謝你〜順便說一句,我解析資源的url沒有谷歌,和喜歡bing,雅虎搜索引擎等等,我想解析後面的關鍵字?q =或q =,我怎麼能匹配關鍵字?我使用(?<= q =)|(?<?q =),我不認爲它是正確的,:(你能幫我解決它嗎?謝謝! –

+0

對於一個新問題,最好如果你打開在這裏提出一個新的Stack Overflow問題,我很樂意在那裏回答它,當你這樣做的時候,隨時給我發信息給我,這樣我就可以回答它了。 – jdotjdot

+0

http://stackoverflow.com/questions/12831537/parse -and-match-the-keyword-in-search-engine-url-use-python-re再次感謝你:) –

3

使用像apachelog這樣的庫來解析Apache日誌行。它會比嘗試爲線路編寫正則表達式更加健壯和安全。