Python之requests框架学习
前言:终于开始写博客了,愿技术随字数增长。
感觉主流编程语言的基本语法大同小异,比如变量类型、循环、分支等。所以看了一遍Python基本语法之后,就直接上爬虫了。学习是输入,写博客是输出。输入输出之间,才能学得牢固一些,不至于黑大瞎子掰棒子,掰一个掉一个。学习requests是根据中国大学MOOC上的北京理工大学的公开课学的,嵩天老师讲的真不错啊。
1. 安装requests
cmd命令行执行 pip install requests 命令即可

2. requests常用方法
requests主要的的方法有7个,分别对应HTTP协议的GET、HEAD、POST、PUT、PATCH、DELETE六个+request()方法。我主要记了与爬虫有关的2个。
方法名 | 参数说明 | 举例 |
---|---|---|
requests.requests(method,url,**kwargs) | method类型,**kwargs代表13个访问控制参数 | requests.request(get,"www.baidu.com",data) |
requests.get(url,params=None,**kwargs) | 其中params为字典或字节流格式,会填充在url后面 | requests.get("www.baidu.com") |

特别提醒:**kwargs详见下文第五节
3. requests.get()
requests.get()方法有两个主要对象:Requests对象和Response对象
Requests对象是调用get()方法时发送给浏览器的数据对象 Response对象则是get到的浏览器数据对象,更重要一些(我们更关注Response对象)。
Requests和Response对象主要属性
r = resquests.get("www.baidu.com",timeout=10)
属性 | 说明 | 举例 |
---|---|---|
r.status_code | HTTP返回的请求状态,200表示成功,404表示失败 | 200 |
r.encoding | 根据HTTP返回的头部猜测的响应内容编码格式 | ISO-8859-1(默认) |
r.apparent_encoding | 从相应内容分析出的编码格式 | uft-8 |
r.text | 相应内容的字符串格式 | ...... |
4. 爬取网页的通用代码框架
爬取网页有风险,处理异常很重要。目前能力尚弱,跟着嵩天老师写了一个简单的方法处理异常。如下:
def getHTML(url):
try:
r = requests.request(url)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return '出现异常!!!'
5. 爬取网页的访问控制参数
这里对应上面的**kwargs,一共有13个,分别是timeout、params、data、json、proxies、header、auth、files、cookie、allow、redirects、cert、stream、verify。
其中前6个比较有意思也比较常用,记录一下。后面的几个用到的时候问度娘吧。
参数名称 | 说明 | 举例 |
---|---|---|
params | 填充在url后面,作为Requests对象的一部分发送给服务器 | 举例见下面的代码1 |
data | 字典、字节序列或文件对象,作为Request的内容(不懂) | 暂无 |
json | JSON格式的数据,作为Request的内容 | 暂无 |
timeout | 设定超时时间,以秒为单位 | timeout=10 |
header | 字典格式,HTTP定制头 | 举例见下面代码2 |
proxies | 字典类型,设置代理服务器。可以增加登录认证,防止对爬虫的逆追踪 | 举例见代码3 |
# 代码1
import requests
body = '123'
r = requests.request("GET", "http://www.python123.io/ws", params=body)
print(r.url)
# 代码2
import requests
hd = {"user-agent":"Chrome/10"}
r = requests.request("POST", "http://www.python123.io/ws", headers=hd)
代表模拟Chrome10版本的浏览器向服务器发送请求
# 代码3
import requests
pxs = {"http":"http://user:pass@10.10.10.1:1234"
"https":"https://10.10.10.1:4321"}
r = requests.request("GET", "http://www.python123.io/ws", proxies=pxs)
好了,今天的小结先写到这里了,还是心不静啊!
日记不足,岁记有余!
转载自:https://juejin.cn/post/6844904008037957639