7-6
ython请求数据
基本的HTTP协议知识后,大家可能会疑问那我该如何模仿浏览器或者手机客户端去向服务器发送HTTP请求呢?python的原生库urllib、第三方库requests、pycurl等都支持HTTP协议,既然有这么多工具可以用,大家可能就又有疑问该选择哪个工具了。在此我特地安利大家用一下requests,它让爬虫变得如此简单,让你再也不用为字符编码、重定向、cookie、响应解压缩烦恼了。如果你坚持用原生的库,那么有以下问题需要你一一解决,这些都是当年自己趟过的坑,绝非危言耸听。
- 需要自己判断服务器返回数据的编码格式,如果这个地方你不能正确判断,那恭喜你之后的每一步,你都必须面对乱码的问题
- 重定向,urllib不能自动判断重定向,需要自己解析重定向的链接并重新请求
- 如果模拟登陆,你必须要手动保证Cookie正确更新和发送
- 很多情况下响应正文是压缩过的,需要做解压处理
- 对于比较长的响应正文,服务器会将正文分段传输,所以还需要你做拼接操作
- 原生的urllib对HTTPS和持久连接都支持不好