我遇到Python3的问题。
我正在尝试获取http状态代码,例如" 200 OK"服务器从文件中读取路径并输入网址。
适用于某些服务器,但对于其他服务器,我遇到以下问题:
Traceback (most recent call last):
File "simple_program.py", line 55, in <module>
main()
File "simple_program.py", line 52, in main
parser(url)
File "simple_program.py", line 27, in parser
r1 = conn.getresponse()
File "/usr/lib/python3.3/http/client.py", line 1143, in getresponse
response.begin()
File "/usr/lib/python3.3/http/client.py", line 354, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.3/http/client.py", line 336, in _read_status
raise BadStatusLine(line)
http.client.BadStatusLine: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
这是代码失败的部分。
conn = http.client.HTTPConnection(url)
conn.request("GET", path)
r1 = conn.getresponse()
conn.close()
print(url_path, r1.status, r1.reason)
print("\n")
你能帮帮我吗?
感谢!!!
答案 0 :(得分:0)
看起来服务器没有发送HTTP状态行...这听起来很奇怪,但有一种方法可以验证这一点。
您可以使用curl
转储响应标头。例如,在我的网站上:
$ curl -I http://aspyct.org
HTTP/1.1 200 OK
Date: Thu, 21 Nov 2013 15:42:16 GMT
Content-Type: text/html
Content-Length: 10645
Last-Modified: Sat, 20 Jul 2013 14:09:39 GMT
Connection: keep-alive
Vary: Accept-Encoding
Expires: Thu, 21 Nov 2013 15:42:15 GMT
Cache-Control: no-cache
Accept-Ranges: bytes
你有什么用?如果没有,可能服务器本身不尊重HTTP协议。
在这种情况下,你可以用python stdlib做些什么。您可能希望实现自己的请求处理程序,并在这些服务器上使用它。