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

文章目录

  • 1、简单介绍requests的使用方法
  • 2、爬虫中六种常用的异常处理。
  • 3、requests库的七个主要方法。
    • 3.1 七个主要方法
    • 3.2 HTTP协议对资源的操作
  • 4、requests库方法的参数详解
    • 4.1 request()参数(requests.request(method, url, **kwargs))
      • 4.1.1 method
      • 4.1.2 url
      • 4.1.3 **kwargs对应的13个参数
      • 4.1.4 具体使用方法
    • 4.2 其他六个方法的参数

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.HTTPError HTTP错误异常
requests.URLRequired URL缺失异常
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的内容
json JSON格式的数据,作为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)

对应参数即为上面内容。

你可能感兴趣的:(python,http)