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

Posted 奔跑的羚羊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:[email protected]/ 语法:

proxies = {
"http": "http://user:[email protected]:3128/",
}

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

 

以上是关于Python爬虫开发系列之三》Requests请求库的使用的主要内容,如果未能解决你的问题,请参考以下文章

Python网络爬虫之三种数据解析方式

《Python网络爬虫之三种数据解析方式?

05,Python网络爬虫之三种数据解析方式

Python爬虫系列:requests基础

Python爬虫--Requests 库用法大全

人生苦短,我用python之三