Python 如何从该输出中获取状态代码?

Python 如何从该输出中获取状态代码?,python,sockets,Python,Sockets,我有一个小代码,它使用套接字编程来获得HTTP响应。我发现很难单独从响应中检索状态代码。如何在不使用任何其他库和剥离方法的情况下检索它 import logging import socket import sys def retrieve_url(url): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(("www.google.com", 80)) s.sendall(b"GET /

我有一个小代码,它使用套接字编程来获得HTTP响应。我发现很难单独从响应中检索状态代码。如何在不使用任何其他库和剥离方法的情况下检索它

import logging
import socket
import sys

def retrieve_url(url):

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect(("www.google.com", 80))
    s.sendall(b"GET /imghp HTTP/1.1\r\nHost: www.google.com\r\n\r\n")
    print(s.recv(4096))
    s.close()
    return b'Hello'


if __name__ == "__main__":
    sys.stdout.buffer.write(retrieve_url(sys.argv[0]))
这是我得到的输出

b'HTTP/1.1 200 OK\r\nDate: Sun, 22 Sep 2019 01:19:14 GMT\r\nExpires: -1\r\nCache-Control: private, max-age=0\r\nContent-Type: text/html; charset=ISO-8859-1\r\nP3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."\r\nServer: gws\r\nX-XSS-Protection: 0\r\nX-Frame-Options: SAMEORIGIN\r\nSet-Cookie: 1P_JAR=2019-09-22-01; expires=Tue, 22-Oct-2019 01:19:14 GMT; path=/; domain=.google.com; SameSite=none\r\nSet-Cookie: NID=188=uQ70aAjlLl7g1P0cc
等等


我只需要单独获取状态代码在本例中为200 only

官方Python HTTP库使用以下方法来执行您正在尝试执行的操作:

行=s.recv4096 尝试: 版本、状态、原因=line.splitNone,2 除值错误外: 尝试: 版本,状态=line.splitNone,1 原因= 除值错误外: 空版本将导致下一次测试失败。 版本= 如果不是version.startswithHTTP/: 自我关闭连接 升起BadStatusLine 他们基本上只是在前两个空格上做一个.splitNone,2分割,中间是状态


如果你认为这是一个剥离方法,请让我知道什么是允许的。

你可以使用标准字符串切片,因为它应该从同一个地方每次开始。如果需要导入,可以将其正则化。您可以执行.find来查找第一个空格并返回索引。可能更多,但我就到此为止@sachinmb27