Python爬虫开发系列之三》Requests请求库的使用

Requests是一个实用、简单、强大的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到。Requests 能够完全满足如今网络的需求。接下来我们从最基本的get post 请求开始 到高级特性一步一个脚印去学习。学习是个渐进的过程,只有脚踏实地不断的去练习才能掌握这些重要的知识点。

一、发送请求 get /post

按照规例首先要导入Requests模块》》》

import requests

r=requests.get('https://www.baidu.com')

r=requests.post('http://httpbin.org/post',data={'key':'value'})

以上就短短这么一行代码就完成了get/post请求,漂亮优雅对吧,当然这只是requests的冰山一角。

 

二、传递参数

在大型的系统项目中,我们的url不会是这么简单,往往是要传很多查询的参数,一般都是以键值对的方式写在url后面(以get请求为例子),例如https://www.baidu.com/get?key=val&name=Myname

Requests允许我们使用params关键字使用字典来传参,例如:

pram={'key1':'val1','key2':'val2'}

r=requests.get('https://www.baidu.com/get',params=pram)

print(r.url)---打印出来的是https://www.baidu.com/get?key1=val1&key2=val2

除了以上我们还可以将一个列表传进去:

pram={'key1':'val1','key2':'val2','list':[value1,value2]}

r=requests.get('https://www.baidu.com/get',params=pram)

print(r.url)---打印出来的是https://www.baidu.com/get?key1=val1&key2=val2&list=value1&list=value2

 以上是关于get请求传参的样例---post传参也是同样操作r=requests.post('https://www.baidu.com/get',data=pram)。

 

三、获取响应内容

r=requests.get('https://www.baidu.com/')

r.text(文本响应内容)或r.content(二进制响应内容)或r.content.json()(json响应内容);在一般情况下获取的图片、mp3.....需要保存为本地文件的时候操作也很简单:如下:

r=requests.get('https://www.baidu.com/fa.ico')

with open('fa.ico','wb') as fb:

        fb.write(r.content)

 

四、定制请求头

url = 'https://api.github.com/some/endpoint'

headers = {'user-agent': 'my-app/0.0.1'}

r = requests.get(url, headers=headers)

 

五、Cookie

获取响应信息的Cookie

url = 'http://example.com/some/cookie/setting/url'

r = requests.get(url)

r.cookies['example_cookie_name']

提交Cookie到服务器

url = 'http://httpbin.org/cookies'

cookies = dict(cookies_are='working')

r = requests.get(url, cookies=cookies)

 

六、超时

r=requests.get('http://github.com', timeout=5)

timeout 仅对连接过程有效,与响应体的下载无关。 timeout 并不是整个下载响应的时间限制,而是如果服务器在 timeout 秒内没有应答,将会引发一个异常(更精确地说,是在 timeout 秒内没有从基础套接字上接收到任何字节的数据时)

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------完美分隔线

 一、代理

 

import requests

 

proxies = {
"http": "http://10.10.1.10:3128",
"https": "http://10.10.1.10:1080",
}

 

requests.get("http://example.org", proxies=proxies)

若你的代理需要使用HTTP Basic Auth,可以使用 http://user:password@host/ 语法:

proxies = {
"http": "http://user:pass@10.10.1.10:3128/",
}

------------------------------------------------------------------------下一篇将详细介绍解析库的使用敬请期待

 

posted @ 2018-06-06 16:29  Jack--  阅读(215)  评论(0编辑  收藏  举报