python requests是什么库_python requests库入门

requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到。可以说,Requests 完全满足如今网络的需求

本文全部来源于官方文档 http://docs.python-requests.org/en/master/

安装方式一般采用$ pip install requests。其它安装方式参考官方文档

requests模块的学习笔记

使用之前

pip install requests

发起get,post,请求获取响应

response = requests.get(url,headers) # 发起get请求,请求url地址对应的响应

response = requests.post(url,data={请求体的字典}) # 发起post请求

response的用法

response.text该方式往往会出现乱码,出现乱码使用response.encoding=”utf-8″

response.content.decode()把响应的二进制字节转化为str类型

bytes—> str

response.request.url # 发送请求的url地址

response.request.headers # 请求头

response.headers # 响应头

获取网页的正确打开方式(通过下面三种获取解码之后的字符串)

1、response.content.decode()

2、response.content.decode(“gbk”)

3、response.text

发起带headers的请求

为了模拟浏览器,获取和浏览器一样的内容headers = {

"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0",

"Referer": "http: // acc.hnczt.gov.cn / SpaceAction.do?method = list & ntype = 3",

"Cookie": "Hm_lvt_35cde00bcde87c267839e0309e482db1 = 1554703285, 1554777297, 1554884326"

}

response = requests.get(url,headers)

使用超时参数

pip install retrying

from retrying import retry

@retry(stop_max_attempt_number=3)

# 数字3代表的是下面的函数执行三次,有一次成功则跳过,没有一次成功则跑出异常

def func():

print("this is func")

raise ValueError("this is test error")

处理cookie相关的请求

直接携带cookie请求url地址1、cookie放在headers中headers = {

"User-Agent":"...","Cookie":"cookie字符串"

}2、cookie字典传递给cookies参数requests.get(url, cookies=cookie_dict)

先发送post请求,获取cookie,带上cookie请求登录的页面1、session = requests.session() # session具有的方法和requests一样

2、session.post(url, data, headers) # 服务器设置在本地的cookie存在session

3、session.get(url) # 会带上之前保存在session中的cookie, 能够请求成功

什么是Requests

Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库

如果你看过上篇文章关于urllib库的使用,你会发现,其实urllib还是非常不方便的,而Requests它会比urllib更加方便,可以节约我们大量的工作。(用了requests之后,你基本都不愿意用urllib了)一句话,requests是python实现的最简单易用的HTTP库,建议爬虫使用requests库。

默认安装好python之后,是没有安装requests模块的,需要单独通过pip安装

requests功能详解

总体功能的一个演示

import requests response = requests.get("https://www.tianqiweiqi.com")

print(type(response))

print(response.status_code)

print(type(response.text))

print(response.text)

print(response.cookies)

print(response.content)

print(response.content.decode("utf-8"))

我们可以看出response使用起来确实非常方便,这里有个问题需要注意一下:

很多情况下的网站如果直接response.text会出现乱码的问题,所以这个使用response.content

这样返回的数据格式其实是二进制格式,然后通过decode()转换为utf-8,这样就解决了通过response.text直接返回显示乱码的问题.

请求发出后,Requests 会基于 HTTP 头部对响应的编码作出有根据的推测。当你访问 response.text 之时,Requests 会使用其推测的文本编码。你可以找出 Requests 使用了什么编码,并且能够使用 response.encoding 属性来改变它.如:

response =requests.get("http://www.tianqiweiqi.com") response.encoding="utf-8" print(response.text)

不管是通过response.content.decode(“utf-8)的方式还是通过response.encoding=”utf-8″的方式都可以避免乱码的问题发生

作者:

喜欢围棋和编程。查看的所有文章

你可能感兴趣的:(python,requests是什么库)