2010-07-09 61 views
11

我正在尋找一個庫或函數調用python或相關的庫,它會讓我提供一個代表HTTP請求/資源的文本數據的原始流,並且會吐出這些信息是一些像字典或列表這種有意義的形式。我不想使用一些內置的類或創建一些新的對象,在我的程序中我收到了一些原始數據,這正是我需要處理的。有沒有解決方案,或者我必須自己編寫一個HTTP解析器?在Python中解析原始的HTTP

編輯:讓我澄清我到底想要做什麼。我在尋找的東西會採取一個字符串,如:

GET /index.html HTTP/1.1 \r\n 
Host:www.stackoverflow.com \r\n 
User-Agent:Firefox \r\n 
etc. 

,送我回去的東西封裝方法,HTTP版本,標題和所有的休息。

+0

- 這裏有兩個問題,我認爲可能會解決這個問題(我試圖詳細解決這個問題): http://stackoverflow.com/questions/2115410/does-python-have-a-module - 解析 - http請求和響應/ http://stackoverflow.com/questions/4685217/parse-raw-http-headers/ – 2011-05-12 19:05:10

回答

1

http://docs.python.org/library/httplib.html我相信這是你正在尋找的圖書館。 python 3的名字有點改變,但是不好走。

+2

我看着,但無法完全找到我所需要的。如果我錯了,請糾正我,但是這個庫不是圍繞着實際收/發請求嗎?我不想接收任何請求,我只想看看原始數據。你能舉一個你認爲會這樣做的方法嗎? – themaestro 2010-07-09 18:55:35

+1

那麼http請求,當你收到它包含原始標題數據,並且你使用這個庫來創建一個標題字典。這是你的文章描述的內容。如果您想通過套接字接收原始文本數據,您可以嘗試http://docs.python.org/library/socket.html,但是您將重新創建大量輪子部分。相反,如果您正在接收原始文本並想要將其解析爲有效的請求頭文件,您可以嘗試http://deron.meranda.us/python/httpheader/pydoc#-parse_token_or_quoted_string,但我沒有自己嘗試過。 – Gabriel 2010-07-10 06:06:23

1

我首先看WebOb。我認爲標準庫中的cgi模塊也有一個HTTP解析器。

+0

Sweet,webob.Request.accept完美地處理了這個問題:http://pythonpaste.org/webob/reference.html#accept-headers – aehlke 2011-02-25 16:30:04

+0

@Wahnfrieden - 我很困惑,但是,如何獲得原始HTTP請求字符串,如問題中所示,並將其轉換爲WebOb對象。我沒有在您的鏈接中看到任何暗示它有可能的鏈接。你可以分享如何將HTTP請求字符串轉換爲WebOb對象嗎? (因爲我需要在我的一個項目上!):) – 2011-05-11 12:32:11

+0

@Brandon對不起,我提前評論 - WebOb解析我需要的部分頭部(只是Accept頭部的值),但我不知道其餘部分。 – aehlke 2011-05-12 18:50:16