requests库是什么呢?
浏览器发送请求消息给服务器,这个过程叫做HTTP request。
requests库是基于urllib库之上,采用 Apache2 Licensed 开源协议编写的,比urllib更加方便。
首先是安装requests库:
pip install requests
其次,导入requests
import requests
接下来介绍requests库的一些方法:
requests.get(url, params=None, **kwargs)
请求获取url的资源
url:新建Request对象的URL链接
params:字典或字节序列,作为参数增加到url中
**kwargs:12个控制访问的可选参数
如:headers:字典格式,HTTP请求头,作为Request对象Header的内容
cookies:字典或CookieJar,Request中的cookie
proxies:字典类型,用于将协议映射为代理的URL
stream:True/False,默认为True,获取body立即下载开关,为False会立即下载响应头和响应体;为True时会先下载响应头,当Reponse调用content方法时才下载响应体
这里修改了headers,可以对比一下与上张图的user-agent
get方法返回的值req是一个Reponse对象,可以通过对象的方法查取我们所需要的信息。
req.status_code:状态码描述
req.text:读取内容
req.json():将json数据转换成字典数据
req.content:读取原始数据
req.headers:应答头信息
接下来呢,我们来尝试使用request库爬取360图片?
在这之前,我们首先介绍一下AJAX
AJAX不是JavaScript的规范,它只是一个哥们“发明”的缩写:Asynchronous JavaScript and XML,意思就是用JavaScript执行异步网络请求。
如果仔细观察一个Form的提交,你就会发现,一旦用户点击“Submit”按钮,表单开始提交,浏览器就会刷新页面,然后在新页面里告诉你操作是成功了还是失败了。如果不幸由于网络太慢或者其他原因,就会得到一个404页面。
这就是Web的运作原理:一次HTTP请求对应一个页面。
如果要让用户留在当前页面中,同时发出新的HTTP请求,就必须用JavaScript发送这个新请求,接收到数据后,再用JavaScript更新页面,这样一来,用户就感觉自己仍然停留在当前页面,但是数据却可以不断地更新。
最早大规模使用AJAX的就是Gmail,Gmail的页面在首次加载后,剩下的所有数据都依赖于AJAX来更新。
用JavaScript写一个完整的AJAX代码并不复杂,但是需要注意:AJAX请求是异步执行的,也就是说,要通过回调函数获得响应。
XHR
就是 XMLHttpRequest 对象。
也就是ajax功能实现所依赖的对象
我们分析一下,向下拖动,变化url参数是
"ch":"funny",表示你选择的图片主题,这里是搞笑的
"sn":0,
"listtype":"new",
"temp":"1"
因此在创建url的时候,这些参数需要传递进去。
说一下我们需求,就是爬取360图片,然后存储。
这里我们构建一个类,类中有哪些方法,需要根据功能划分一下
1.开始爬虫方法
2.获取当前url的数据
3.获取对应图片的URL
4.存储数据