requests库的基础使用

1.requests简介

Requests是一个优雅而简单的Python HTTP库,专为人类而构建,requests的使用方式非常的简单、直观、人性化,让程序员的精力完全从库的使用中解放出来。

Requests的官方文档同样也非常的完善详尽,而且少见的有中文官方文档:http://cn.python-requests.org/zh_CN/latest/。 英文文档:http://docs.python-requests.org/en/master/api/

首先打开requests库的源码

def request(self, method, url,
            params=None, data=None, headers=None, cookies=None, files=None,
            auth=None, timeout=None, allow_redirects=True, proxies=None,
            hooks=None, stream=None, verify=None, cert=None, json=None)

Requests的请求不再像urllib一样需要去构造各种Request、opener和handler,使用Requests构造的方法,并在其中传入需要的参数即可。每一个请求方法都有一个对应的API,比如GET请求就可以使用get()方法,而其他的请求类型,都有各自对应的方法:

import requests

req1 = requests.get("https://www.baidu.com")
req2 = requests.post("https://www.baidu.com")
req3 = requests.put("https://www.baidu.com")
req4 = requests.delete("https://www.baidu.com")

2.发送请求和传入参数

我们可以直接往传入headers,我们以简书网为例:

# 自定义headers
headers = {
    "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"
}
# 自定义cookies
cookies = {
    "cookie": "sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2216e2b34f5c5357-040290e0015209-7373e61-1049088-16e2b34f5c6470%22%2C%22%24device_id%22%3A%2216e2b34f5c5357-040290e0015209-7373e61-1049088-16e2b34f5c6470%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_referrer%22%3A%22%22%2C%22%24latest_referrer_host%22%3A%22%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%7D%7D; __yadk_uid=Xtd0BZTUL8a4fZOfayVfSgHUbAlRlIyC; signin_redirect=https%3A%2F%2Fwww.jianshu.com%2F; read_mode=day; default_font=font2; locale=zh-CN; Hm_lvt_0c0e9d9b1e7d617b3e6842e85b9fb068=1572683291,1572878893,1572910084,1573038354; Hm_lpvt_0c0e9d9b1e7d617b3e6842e85b9fb068=1573038354"
}

# 对简书网发送请求
req = requests.get("https://www.jianshu.com", headers=headers, cookies=cookies)

在网络请求中,我们常常会遇到状态码是3开头的重定向问题,在Requests中是默认开启允许重定向的,即遇到重定向时,会自动继续访问。

req = requests.get("https://www.jianshu.com", headers=headers, cookies=cookies,allow_director=False)

当我们需要使用代理时,同样构造代理字典,传递给proxies参数,自定义proxies参数,porxies = {"http":"id:port"}

3.接受响应

通过Requests发起请求获取到的是request对象,我们可以通过text直接读取到字符串格式的响应内容,或用content获取原始的二进制数据。Requests会自动的根据响应的报头来猜测网页的编码是什么,然后根据猜测的编码来解码网页内容,基本上大部分的网页都能够正确的被解码。而如果发现text解码不正确的时候,就需要我们自己手动的去指定解码的编码格式。如下:

import requests

# 对简书网发送请求
req = requests.get("https://www.jianshu.com", headers=headers, cookies=cookies)

# text读取内容
req.encoding = "utf-8"
res = req.text
print(res)

或者用content方法获取二进制数据

# content读取响应内容
res = req.content.decode()
print(res)

除了查看响应内容之外,我们还可以单独地查看请求头中的headers,encoding,url,status code等

res_code = req.status_code
res_encoding = req.encoding
res_header = req.headers["Connection"]
res_headers = req.headers
res_url = req.url

print(res_code)
print(res_encoding)
print(res_headers)
print(res_url)

4.session对象

在Requests中,实现了Session(会话)功能,当我们使用Session时,能够像浏览器一样,在没有关闭关闭浏览器时,能够保持住访问的状态。 这个功能常常被我们用于登陆之后的数据获取,使我们不用再一次又一次的传递cookies。

首先我们需要去生成一个Session对象,然后用这个Session对象来发起访问,发起访问的方法与正常的请求是一摸一样的。

session = requests.session()
req = session.get("http://www.baidu.com")
req.encoding = "utf-8"
res = req.text
print(res)

同时,需要注意的是,如果是我们在get()方法中传入headers和cookies等数据,那么这些数据只在当前这一次请求中有效。如果你想要让一个headers在Session的整个生命周期内都有效的话,需要用以下的方式来进行设置:

# 实例一个对象
session = requests.session()

# 设置整个headers
session.headers = {
    "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"
}
# 增加一条header
session.headers.update({"x-test":"true"})

req = session.get("http://www.jianshu.com",headers=session.headers)
req.encoding = "utf-8"
res = req.text
print(res)

原文地址:https://www.cnblogs.com/zgzeng/p/11808185.html

时间: 2024-10-03 01:07:57

requests库的基础使用的相关文章

requests库的基础知识

1.安装. cmd----------->> pip install requests. 2. 七种操作方法. # GET 全部信息 # HEADER 仅头部信息 # Put 全部重置 # Patch 局部更新 ## 更改操作用户# POST 后面添加新内容 ## 搜索使用 # DELETE 删除全部 import requests ''' r = requests.get("http://www.baidu.com") # 获得全部文本信息 uRL对应的页面内容 prin

爬虫基础(requests库的基本使用)--02

什么是Requests Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库如果你看过上篇文章关于urllib库的使用,你会发现,其实urllib还是非常不方便的,而Requests它会比urllib更加方便,可以节约我们大量的工作.(用了requests之后,你基本都不愿意用urllib了)一句话,requests是python实现的最简单易用的HTTP库,建议爬虫使用requests库. 默认安装好python之后,是没有安

MOOC《Python网络爬虫与信息提取》学习过程笔记【requests库】第一周1-3

一得到百度网页的html源代码: >>> import requests >>> r=requests.get("http://www.baidu.com") >>> r.status_code #查看状态码,为200表示访问成功,其他表示访问失败 200 >>> r.encoding='utf-8' #更改编码为utf-8编码 >>> r.text #打印网页内容 >>> r.

[爬虫] requests库

requests库的7个常用方法 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(

Python3网络爬虫——三、Requests库的基本使用

一.什么是Requests Requests是用Python语言编写,基于urllib,采用Apache2 Licensed开元协议的HTTP库.它比urllib更加的方便,可以节约我们大量的工作完全满足HTTP测试需求.简单来讲,即Python实现的简单易用的HTTP库. 二.Requests库的安装 如果是初学者,建议使用原生Python3进行安装. 1 >> pip3 install requests 如果有一定的Python基础(会基本语法即可),使用anaconda进行安装更加方便,

Requests库详解

urllib库作为基本库,requests库也是在urllib库基础上发展的 但是urllib在使用上不如requests便利,比如上篇文章在写urllib库的时候,比如代理设置,处理cookie时,没有写,因为感觉比较繁琐,另外在发送post请求的时候,也是比较繁琐. 一言而代之,requests库是python实现的简单易用的HTTP库 在以后做爬虫的时候,建议用requests,不用urllib 用法讲解: #!/usr/bin/env python # -*- coding:utf-8

python Requests库入门

一.Requests 库的安装 对Requests 库 更多了解移步:http://www.python-requests.org 安装操作: win平台:"以管理员身份运行" cmd ,执行 pip install requests 测试安装是否成功: >>> import requests >>> r=requests.get('http://www.baidu.com') >>> print(r.status_code) 20

爬虫1.1-基础知识+requests库

目录 爬虫-基础知识+requests库 1. 状态返回码 2. URL各个字段解释 2. requests库 3. requests库爬虫的基本流程 爬虫-基础知识+requests库 关于html的知识,可以到w3school中进行了解学习.http://www.w3school.com.cn/html/index.asp,水平有限,这里不多提及. 1. 状态返回码 标志这这一次的请求状态,成功或失败,失败原因大概是什么 200:请求正常,服务器正常返回数据. 不代表爬去到正确信息了 301

Python接口测试——Requests库的基本使用

Requests安装 使用pip安装命令: pip install requests 打开cmd,输入python然后导入requests如果安装成功没有任何提示 如果提示如下则说明安装失败 ImportError: No module named 'requests' Requests 基础应用 发送不同类型HTTP请求 requests库内置了不同的方法来发送不同类型的http请求,用法如下所示: import requests base_url = "http://httpbin.org&