python爬虫基础requests库的使用以及参数详解

1、简单介绍requests的使用方法

以百度网站为例:

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

print(r.status_code)

调用status_code后,会返回一个值,如果返回值为200,则代表访问成功。
接着使用text查看内容:

print(r.text)

我们会发现有许多乱码,因此就需要改变编码方式。

print(r.encoding)
print(r.apparent_encoding)
r.encoding = r.apparent_encoding
# 也可以这样写
# r.encoding = 'utf-8'

在这里插入图片描述
encoding方法是从HTTPheader中猜测响应内容的编码,但如果header中不存在charset字段,就默认编码为ISO-8859-1,而apparent_encoding则是从内容中分析编码,只需将它赋给encoding 即可。

下面是爬虫通用代码框架:

import requests
try:
    url = 'http://www.baidu.com'
    r = requests.get(url)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.text)
except:
    print("爬取失败")

r.raise_for_status()用来判断status_code的返回值,如果不是200,则返回一个HTTPError异常。

2、爬虫中六种常用的异常处理。

异常说明
requests.ConnectionError网络连接错误异常, 如DNS查询失败,拒接连接等
requests.HTTPErrorHTTP错误异常
requests.URLRequiredURL缺失异常
requests.TooManyRedirects超过最大重定向次数,产生重定向异常
requests.ConnectTimeout连接远程服务时,超时异常
requests.Timeout请求URL超时, 产生超时异常

3、requests库的七个主要方法。

3.1 七个主要方法

方法说明
requests.request()构造一个请求,支撑以下各种方法的基础方法
requests.get()获取HTML网页的主要方法,对应于HTTP的GET
requests.head()获取HTML网页头信息的方法, 对应HTTP的HEAD
requests.post()向HTML网页提交POST请求的方法, 对应于HTTP的POST
requests.put()向HTML网页提交PUT请求的方法,对应于HTTP的PUT
requests.patch()向HTML网页提交局部修改请求,对应于HTTP的PATCH
requests.delete()向HTML页面提交删除请求,对应于HTTP的DELETE

3.2 HTTP协议对资源的操作

方法说明
GET请求获取URL位置资源
HEAD请求获取URL位置资源的响应报告,即获得该资源的头部信息
POST请求向URL位置的资源后添加新的数据
PUT请求向URL位置储存一个资源,覆盖原URL位置的资源
PATCH请求局部更新URL位置的资源,即改变该处资源的部分内容
DELETE请求删除URL位置储存的资源

4、requests库方法的参数详解

4.1 request()参数(requests.request(method, url, **kwargs))

4.1.1 method

请求方式,对应GET、POST、PUT等七种操作方法

4.1.2 url

文本连接

4.1.3 **kwargs对应的13个参数

参数说明
params字典或字节序列,作为参数增加到url中
data字典,字节序列或文件对象,作为request的内容
jsonJSON格式的数据,作为request的内容
headers字典,HTTP定制头
cookies字典或CookieJar, request中的cookie
auth元组,支持HTTp认证功能
files字典类型,传输文件
timeout设定超时时间,秒为单位
proxies字典类型,设定访问代理服务器,可以增加登录认证
allow_redirects重定向开关,默认为True
stream获取内容立即下载开关,默认为True
verify认证SSL证书开关,默认为True
cert本地SSL证书路径

4.1.4 具体使用方法

以params和headers为例,其他类似:

import requests

kv1 = {'key1': 'value1', 'key2': 'value2'}
kv2 = {'User-Agent': 'chrome'}
url = 'http://www.baidu.com'
r1 = requests.request("GET", url, params=kv1)
r2 = requests.request('POST', url, headers=kv2)

# 使用params后
print(r1.url)

# 原User-Agent显示为python爬虫
print(r1.request.headers)

# 伪装为谷歌浏览器chrome进行访问后的User-Agent
print(r2.request.headers)

结果:
在这里插入图片描述

4.2 其他六个方法的参数

1、requests.get(url, params=None, **kwargs)
2、requests.head(url, **kwargs)
3、requests.post(url, data=None, json=None, **kwargs)
4、requests.put(url, data=None, **kwargs)
5、requests.patch(url, data=None, **kwargs)
6、requests.delete(url, **kwargs)

对应参数即为上面内容。