Máy chủ được đề cập đang cung cấp cho bạn một phản hồi gzipped . Máy chủ cũng là rất bị hỏng; nó sẽ gửi các tiêu đề sau:
$ curl -D - -o /dev/null -s -H 'Accept-Encoding: gzip, deflate' http://www.wrcc.dri.edu/WRCCWrappers.py?sodxtrmts+028815+por+por+pcpn+none+mave+5+01+F
HTTP/1.1 200 OK
Date: Tue, 06 Jan 2015 17:46:49 GMT
Server: Apache
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"><html xmlns="http: //www.w3.org/1999/xhtml" lang="en-US">
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 3659
Content-Type: text/html
Dòng <!DOCTYPE..>
có không phải là một tiêu đề HTTP hợp lệ. Do đó, các tiêu đề còn lại trong quá khứ Server
là bị bỏ qua. Tại sao máy chủ xen vào đó là không rõ ràng; trong tất cả các mui xe có khả năng WRCCWrappers.py
là một tập lệnh CGI không xuất các tiêu đề nhưng không bao gồm một dòng mới đôi sau dòng doctype, hãy ghép máy chủ Apache vào chèn các tiêu đề bổ sung ở đó.
Vì vậy, requests
cũng không phát hiện thấy dữ liệu được mã hóa gzip. Dữ liệu là tất cả ở đó, bạn chỉ cần giải mã nó. Hoặc bạn có thể nếu nó không phải là khá không đầy đủ.
công việc xung quanh là bảo với máy chủ không phải bận tâm với nén:
headers = {'Accept-Encoding': 'identity'}
r = requests.get(url, headers=headers)
và một phản ứng không nén được trả về.
Ngẫu nhiên, trên Python 2 phân tích cú pháp HTTP tiêu đề không phải là quá nghiêm ngặt và quản lý để khai báo DOCTYPE một tiêu đề:
>>> pprint(dict(r.headers))
{'<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "dtd/xhtml1-transitional.dtd"><html xmlns="http': '//www.w3.org/1999/xhtml" lang="en-US">',
'connection': 'Keep-Alive',
'content-encoding': 'gzip',
'content-length': '3659',
'content-type': 'text/html',
'date': 'Tue, 06 Jan 2015 17:42:06 GMT',
'keep-alive': 'timeout=5, max=100',
'server': 'Apache',
'vary': 'Accept-Encoding'}
và thông tin content-encoding
sống sót, do đó requests
giải mã nội dung cho bạn, như mong đợi .
Dường như làm việc ở đây, chỉ cần thử nó với các url chính xác trên Python 2,7 – Kroltan
'test = html.fromstring (r.text)' Id –
khuyên BeautifulSoup cho web cào http: // đẹp-soup- 4.readthedocs.org/en/latest/#. Nó sẽ làm cho cuộc sống của bạn trở nên dễ dàng hơn rất nhiều. – Ron