HTTP解析器是在MIT許可一個HTTP請求/響應解析器為Python的C,基於HTTP-解析器瑞恩·達爾。
安裝:
PIP安裝HTTP解析器
或從源代碼安裝:
混帳混帳克隆://github.com/benoitc/http-parser.git
CD HTTP解析器&&蟒蛇setup.py安裝
用法:
HTTP解析器為您提供在C中,你可以在你的Python程序訪問parser.HttpParser低級語法分析器和http.HttpStream提供更高級別的訪問權限為可讀,連續io.RawIOBase對象。
為了幫助你在一天的工作,HTTP-解析器prvides你3種閱讀器的閱讀器模塊:IterReader閱讀的iterable,StringReader來讀取字符串和StringIO的對象,SocketReader讀取插座或物體與同一個î (recv_into需要)。你cnan當然,使用任何io.RawIOBase對象。
Likre HTTP解析器在C中,你可以通過你自己的回調到C解析器,這樣你就可以最終解析異步任何HTTP流。回調是:
on_message_begin()
on_path(路徑)
on_query_string(QUERY_STRING)
on_url(URL)
on_fragment(片段)
on_header_field(場,last_was_value)
on_header_value(鍵,值)
on_headers_complete()
on_body(塊)
on_message_complete()
HttpStream示例
例如:
#!的/ usr /斌/包膜蟒蛇
進口插座
從http_parser.http進口HttpStream
從http_parser.reader進口SocketReader
高清的main():
  S = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
 嘗試:
  s.connect(('gunicorn.org',80))
  s.send(“GET / HTTP / 1.1 r n主機:gunicorn.org r ñ r N”)
  R = SocketReader(S)
  P = HttpStream(r)的
 打印p.headers()
 打印p.body_file()讀取()
 最後:
  S.CLOSE()
如果__name__ ==“__main__”:
 主要()
HttpParser的例子:
#!的/ usr /斌/包膜蟒蛇
進口插座
從http_parser.parser進口HttpParser
高清的main():
  P = HttpParser()
  S = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
 機身= []
 嘗試:
  s.connect(('gunicorn.org',80))
  s.send(“GET / HTTP / 1.1 r n主機:gunicorn.org r ñ r N”)
 而真:
 數據= s.recv(1024)
 如果沒有數據:
 突破
  recved = LEN(數據)
  nparsed = p.execute(數據,recved)
 斷言recved nparsed ==
 如果p.is_headers_complete():
 打印p.get_headers()
 如果p.is_partial_body():
  body.append(p.recv_body())
 如果p.is_message_complete():
 突破
 打印“”。加入(體)
 最後:
  S.CLOSE()
如果__name__ ==“__main__”:
 主要()
您可以在代碼中找到更多的文檔(或使用文檔genererator)
要求:
- 在Python中
- 在用Cython如果你需要重建的C代碼
評論沒有發現