之前介绍过urllib和urllib2这两个在编写爬虫时常用的python内置库。事实上由于这两个内置库在设置复杂的爬取时,需要很多复杂的自定义设置,给很多开发者造成了很大的困扰,因此开发者会选择用另一个第三方库requests,虽然不是python的内置库,但其简洁性还是受到了大家的青睐。
发送请求
网络爬虫中首先要做的就是发送请求以获得响应网页。requests提供了简明的请求表达方法。主要如下:
r = requests.post("http://httpbin.org/post")
r = requests.get('https://github.com/timeline.json')
r = requests.put("http://httpbin.org/put")
r = requests.delete("http://httpbin.org/dr = requests.head("http://httpbin.org/get")
r = requests.options("http://httpbin.org/get")
在此我们常用的是get和post方法,因此本文也着重介绍下这两种方式(两种方法的区别点击此处):
requests.get(url, params=None, **kwargs)
参数url为请求地址,params为url参数,传入后会以正确的格式显示在url上:
payload = {'key1': 'value1', 'key2': ['value2', 'value3']} r = requests.get('http://httpbin.org/get', params=payload) print(r.url) #http://httpbin.org/get?key1=value1&key2=value2&key2=value3
后面的关键字参数可以传入cookies、headers等参数。
返回对象r为requests.Response对象,其具有的常用属性有r.cookies、r.headers、r.text、r.content、r.url等。常用的方法有r.json()等,具体可以自行测试使用。
requests.post((url, data=None, json=None, **kwargs)
参数基本同get,data为提交到服务器的数据,这也是post方式区别于get的一点。返回结果与get相同。
参考网址:requests库学习参考