Python, запросы, ошибка = http.client.badstatusline: <serverstats>

Пытаюсь получить данные с URL-адреса, но возникают проблемы с запросом. Я предполагаю, что это как-то связано с форматированием (его нет) страницы или данных?

Я использую Python 3.6.5, запросы 2.20.0

import requests
r = requests.get('http://37.187.88.24:7141/')
print (r)

Это дает мне эту ошибку и показывает первую строку страницы

File " ..  \Python36-32\lib\http\client.py", line 279, in _read_statusraise BadStatusLine(line)http.client.BadStatusLine: <ServerStats>

Попробуйте обновить запросы, urllib3. pip install urllib3

Jhovanny Uribe 26.10.2018 03:53
1
1
630
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ответ этого сервера просто не соответствует протоколу HTTP. Он отвечает контентом напрямую, без строки состояния (обычно это HTTP/1.1 200 OK). Вы можете увидеть это с помощью такой утилиты, как curl:

# curl -v http://37.187.88.24:7141/
*   Trying 37.187.88.24...
* TCP_NODELAY set
* Connected to 37.187.88.24 (37.187.88.24) port 7141 (#0)
> GET / HTTP/1.1
> Host: 37.187.88.24:7141
> User-Agent: curl/7.56.1
> Accept: */*
>
<ServerStats>
<Name>TP_Map_Test</Name>
<ModuleName>Napoleonic Wars</ModuleName>
...(snipped)

Если у вас есть этот веб-сервер, исправьте свое веб-приложение, чтобы он давал правильный ответ. Если вы этого не сделаете, вы можете использовать telnetlib для связи с сервером через базовый протокол telnet:

from telnetlib import Telnet
t = Telnet('37.187.88.24', 7141)
t.write(b'GET / HTTP/1.0\n')
print(t.read_all())

Это выводит:

b'<ServerStats>\n<Name>TP_Map_Test</Name>\n<ModuleName>Napoleonic Wars</ModuleName>\n<MultiplayerVersionNo>1157</MultiplayerVersionNo>\n<ModuleVersionNo>1210</ModuleVersionNo>\n<MapID>162</MapID>\n<MapName>custom map 1</MapName>\n<MapTypeID>4</MapTypeID>\n<MapTypeName>Deathmatch</MapTypeName>\n<NumberOfActivePlayers>0</NumberOfActivePlayers>\n<MaxNumberOfPlayers>4</MaxNumberOfPlayers>\n<HasPassword>Yes</HasPassword>\n<IsDedicated>Yes</IsDedicated>\n<HasSteamAntiCheat>No</HasSteamAntiCheat>\n<ModuleSetting0>6</ModuleSetting0>\n<ModuleSetting1>8</ModuleSetting1>\n<ModuleSetting2>0</ModuleSetting2>\n<ModuleSetting3>0</ModuleSetting3>\n<ModuleSetting4>1</ModuleSetting4>\n<ModuleSetting5>1</ModuleSetting5>\n<ModuleSetting6>100</ModuleSetting6>\n<ModuleSetting7>0</ModuleSetting7>\n<ModuleSetting8>0</ModuleSetting8>\n<ModuleSetting9>1</ModuleSetting9>\n<ModuleSetting10>2</ModuleSetting10>\n<ModuleSetting11>120</ModuleSetting11>\n<ModuleSetting12>300</ModuleSetting12>\n<ModuleSetting13>5</ModuleSetting13>\n</ServerStats>'

Другие вопросы по теме