84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
我今天尝试爬去糗事百科的。F12后发现REquest headers中Accept-Encoding:gzip, deflate, sdch 我就以为是被压缩的,后来
response=urllib.request.urlopen(Request print(response.info().get('Content-Encoding'))
返回的是None,请问到底如何确定否被压缩
人生最曼妙的风景,竟是内心的淡定与从容!
你需要在抓取时设置 Accept-Encoding 这个头才会被压缩。
Accept-Encoding
在浏览器中 Accept-Encoding:gzip, deflate, sdch 在告诉网站浏览器支持 gzip, deflate, sdch 这三种压缩方式。也就是说这不代表网站支持的压缩方式,而是代表浏览器支持的压缩方式。
Accept-Encoding:gzip, deflate, sdch
gzip
deflate
sdch
网站会选择其中一种支持的压缩方式返回,压缩方式为 Content-Encoding 的值。浏览器会根据这个值来选择对应的解压方式。
Content-Encoding
糗百支持 gzip,但是如果不设置 Accept-Encoding 则不会进行压缩。
python3#!/usr/bin/env python3 from urllib import request USER_AGENT = r'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.107 Safari/537.36' req = request.Request(r'http://www.qiushibaike.com/', headers={'User-Agent': USER_AGENT, 'Accept-Encoding': 'gzip'}) res = request.urlopen(req) print(res.info().get('Content-Encoding'))
python3
#!/usr/bin/env python3 from urllib import request USER_AGENT = r'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.107 Safari/537.36' req = request.Request(r'http://www.qiushibaike.com/', headers={'User-Agent': USER_AGENT, 'Accept-Encoding': 'gzip'}) res = request.urlopen(req) print(res.info().get('Content-Encoding'))
上面的脚本输出为
你需要在抓取时设置
Accept-Encoding
这个头才会被压缩。在浏览器中
Accept-Encoding:gzip, deflate, sdch
在告诉网站浏览器支持gzip
,deflate
,sdch
这三种压缩方式。也就是说这不代表网站支持的压缩方式,而是代表浏览器支持的压缩方式。网站会选择其中一种支持的压缩方式返回,压缩方式为
Content-Encoding
的值。浏览器会根据这个值来选择对应的解压方式。糗百支持
gzip
,但是如果不设置Accept-Encoding
则不会进行压缩。上面的脚本输出为