0

レスポンスはこんな感じ

HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
Content-Type: text/html; charset=UTF-8
Date: Fri, 11 Sep 2015 19:18:15 GMT
Expires: Sun, 11 Oct 2015 19:18:15 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 219
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>

空行のインデックスを取得したいのですが、試してみました

response.index("\n\n")

しかし、それは機能しません。

助言がありますか?

ありがとう!

編集:それは私にこれを与える

Traceback (most recent call last):
  File "test.py", line 15, in <module>
    test = response.index("\n\n")
ValueError: substring not found

これは私の完全なコードです:

import socket

server = "www.google.com"
server = socket.gethostbyname(server)
port = 80
request = "GET / HTTP/1.1\nHost: " + server + "\n\n"

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

sock.connect((server, port))
sock.send(request.encode())

response = sock.recv(4096)
print(response)

test = response.index("\n\n")

print(test)
4

1 に答える 1

0

編集:コード全体を見た後、受信したデータがエンコードされており、データをデコードする必要があることは簡単にわかりました。

重要な部分はresponse = sock.recv(4096).decode("utf-8")、Python でバイト配列を文字列に変換する部分でした。

このコードは私にとってはうまくいきます。

import socket

server = "www.google.com"
server = socket.gethostbyname(server)
port = 80
request = "GET / HTTP/1.1\nHost: " + server + "\n\n"

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

sock.connect((server, port))
sock.send(request.encode())

response = sock.recv(4096).decode("utf-8")
print(response)

test = response.index("\r\n\r")

print(test)
于 2015-09-11T21:02:57.953 に答える