试图从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>
答案 0 :(得分: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)
如果您拥有该Web服务器,请修复您的Web应用以给出有效的响应。如果不这样做,则可以使用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>'