Python之requests框架学习

前言:终于开始写博客了,愿技术随字数增加。python

感受主流编程语言的基本语法大同小异,好比变量类型、循环、分支等。因此看了一遍Python基本语法以后,就直接上爬虫了。学习是输入,写博客是输出。输入输出之间,才能学得牢固一些,不至于黑大瞎子掰棒子,掰一个掉一个。学习requests是根据中国大学MOOC上的北京理工大学的公开课学的,嵩天老师讲的真不错啊。
复制代码

1. 安装requests

  cmd命令行执行 pip install requests 命令便可    编程

  在Python IDLE导入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详见下文第五节 json

3. requests.get()

  requests.get()方法有两个主要对象:Requests对象和Response对象浏览器

Requests对象是调用get()方法时发送给浏览器的数据对象
Response对象则是get到的浏览器数据对象,更重要一些(咱们更关注Response对象)。bash

  Requests和Response对象主要属性
服务器

r = resquests.get("www.baidu.com",timeout=10)
cookie

属性 说明 举例
r.status_code HTTP返回的请求状态,200表示成功,404表示失败 200
r.encoding 根据HTTP返回的头部猜想的响应内容编码格式 ISO-8859-1(默认)
r.apparent_encoding 从相应内容分析出的编码格式 uft-8
r.text 相应内容的字符串格式 ......

4. 爬取网页的通用代码框架

爬取网页有风险,处理异常很重要。目前能力尚弱,跟着嵩天老师写了一个简单的方法处理异常。以下:app

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)
复制代码

输出为“www.python123.io/ws?123”框架

# 代码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)
复制代码

好了,今天的小结先写到这里了,仍是心不静啊!
日记不足,岁记有余!
复制代码
相关文章
相关标签/搜索