Я новичок в Python. Я делаю курс в Python 2.7, но в то же время, я хочу быть в состоянии сделать все, что в Python 3.Печать данных HTML с помощью Python 3
кода в Python 2.7:
import socket
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('www.py4inf.com', 80))
mysock.send('GET http://www.py4inf.com/code/romeo.txt HTTP/1.0\n\n')
while True:
data = mysock.recv(512)
if (len(data) < 1) :
break
print data
mysock.close()
Урожайность правильно отформатированных данные, например, так :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
код в Python 3:
import socket
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('www.py4inf.com', 80))
mysock.send(('GET http://www.py4inf.com/code/romeo.txt HTTP/1.0\n\n').encode())
while True:
data = mysock.recv(512)
if (len(data) < 1) :
break
print(data);
mysock.close()
И это дает:
b'HTTP/1.1 200 OK\r\nContent-Type: text/html; charset="utf-8"\r\nContent-Length: 2788\r\nConnection: Close\r\n\r\n<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\n<html>\n<head>\n<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
Как вы можете видеть, он добавляет символ «b» и игнорирует \ r \ n. Отформатировано форматирование. Откуда взялся «b»? Как я могу сделать python соответствующим образом? Я пробовал преобразовать его в строку, перед печатью, но это не помогло.
Это интересный способ получить HTML ... Вы уже нашли библиотеку 'запросов'? –
@Marki, так что в основном вы отправляете и получаете байт в Python3 (правильно). Так что вам нужно сделать это, чтобы декодировать его перед печатью. то есть. 'print (data.decode ('utf-8'))' – Anzel
Спасибо вам за это. Я еще не нашел библиотеку запросов. Однако меня интересовала библиотека urllib. Я буду читать о них завтра. – Marki