Python使用Requests请求网页方式

 更新时间:2023年03月14日 09:24:16   作者:程序猿-张益达  
这篇文章主要介绍了Python使用Requests请求网页方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Requests 继承了urllib2的所有特性。

Requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。

安装方式

利用 pip 安装

$ pip install requests

GET请求

基本GET请求(headers参数 和 parmas参数)

1.最基本的GET请求可以直接用get方法'

response = requests.get("http://www.baidu.com/")
 
# 也可以这么写
# response = requests.request("get", "http://www.baidu.com/")

2.添加 headers 和 查询参数

如果想添加 headers,可以传入headers参数来增加请求头中的headers信息。

如果要将参数放在url中传递,可以利用 params 参数。

import requests
 
kw = {'wd':'长城'}
 
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
 
# params 接收一个字典或者字符串的查询参数,字典类型自动转换为url编码,不需要urlencode()
response = requests.get("http://www.baidu.com/s?", params = kw, headers = headers)
 
# 查看响应内容,response.text 返回的是Unicode格式的数据
print (response.text)
 
# 查看响应内容,response.content返回的字节流数据
print (respones.content)
 
# 查看完整url地址
print (response.url)
 
# 查看响应头部字符编码
print (response.encoding)
 
# 查看响应码
print (response.status_code)

运行结果

......
 
......
 
'http://www.baidu.com/s?wd=%E9%95%BF%E5%9F%8E'
 
'utf-8'
 
200

使用response.text 时,Requests 会基于 HTTP 响应的文本编码自动解码响应内容,大多数 Unicode 字符集都能被无缝地解码。

使用response.content 时,返回的是服务器响应数据的原始二进制字节流,可以用来保存图片等二进制文件。

POST方法

1.基本的POST的请求

response = requests.post("http://www.baidu.com/",data = data)

2.body带参数

formdata = {
    "type": "AUTO",
    "doctype": "json",
    "key": "www",
    "ue": "UTF-8",
}
url = "http://auto-installment/v1/loan-credit-check"
response = requests.post(url,data = data,headers=headers)
 
print(response.text)#显示返回结果
print(response.json())# 如果是json文件可以直接显示

注意:

打印的结果出现中文乱码,使用json.dupms(response, ensure_ascii=False))解决

Session

一般利用Session在跨请求的时候保持某些参数,比如实现登录后才能访问其他页面

# 1. 创建session对象,可以保存Cookie值
session = requests.session()
 
# 2. 需要登录的用户名和密码
data = {"username": "mxxxx", "password": "1233444"}
 
# 3. 发送附带用户名和密码的请求,并获取登录后的Cookie值,保存在ssion里
session.post("https://www.jianshu.com/sign_in", data=data)
 
# 4. ssion包含用户登录后的Cookie值,可以直接访问那些登录后才可以访问的页面
response = session.get("https://www.jianshu.com/writer#/")

踩坑记要

1.在使用requests去请求一个接口时,出现报错的情况,但是这个接口本身却没有问题。这是因为接口的请求参数有两种情况:简单类型(一般少于3个)和复杂对象类型。

解决方法:在headers中定义一下这两种参数的类型

简单类型:headers={"Content-Type": "application/x-www-form-urlencoded"}

复杂对象类型:headers={"Content-Type":application/json}

2.某些HTTPS请求存在 SSL证书验证

解决方法:response = requests.get("https://www.baidu.com/", verify=False)

扩展

1.requests请求失败后,增加重试机制(若失败,将会重试3次)

request_retry = requests.adapatrs.HTTPAdapaters(max_retries=3)
session.mount('https://',request_retry)  

2.使用grequests实现异步请求

urls = [
    'http://www.url1.com',
    'http://www.url2.com',
    'http://www.url3.com',
    'http://www.url4.com',
    'http://www.url5.com',
]
resp = (grequests.get(u) for u in urls)
grequests.map(resp)

3.自定义cookies

我们使用Session实例来保持请求之间的cookies,但是有些特殊情况,需要使用自定义的cookies

我们使用Session实例来保持请求之间的cookies,但是有些特殊情况,需要使用自定义的cookies

# 自定义cookies
cookie = {'guid':'5BF0FAB4-A7CF-463E-8C17-C1576fc7a9a8','uuid':'3ff5f4091f35a467'}
 
session.post('http://', cookies=cookie)

4.统计一个API请求花费的时间

session.get(url).elapsed.total_seconds() 

5.设置请求超时

session.get(url, timeout=15)

6.文件上传

Requests利用files作为参数模拟提交文件数据

file = {'file':open('test.bmp','rb')}   #rb表示用二进制格式打开指定目录下的文件,且用于只读
r =requests.post('http://',files=file)
print(r.text)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 如何在windows下安装配置python工具Ulipad

    如何在windows下安装配置python工具Ulipad

    这篇文章主要介绍了如何在windows下安装配置python工具Ulipad,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • python字典改变value值方法总结

    python字典改变value值方法总结

    在本文里小编给大家分享了关于python字典如何改变value值的相关知识点以及实例代码,需要的朋友们学习下。
    2019-06-06
  • Python如何执行系统命令

    Python如何执行系统命令

    这篇文章主要介绍了Python如何执行系统命令,帮助大家更好的利用python操作系统,感兴趣的朋友可以了解下
    2020-09-09
  • python openpyxl筛选某些列的操作

    python openpyxl筛选某些列的操作

    这篇文章主要介绍了python openpyxl筛选某些列的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Python中list列表的一些进阶使用方法介绍

    Python中list列表的一些进阶使用方法介绍

    这篇文章主要介绍了Python中list列表的一些进阶使用方法介绍,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • Python在报表自动化的优势及实现流程

    Python在报表自动化的优势及实现流程

    本文利用Python实现报表自动化,通过介绍环境设置、数据收集和准备、报表生成以及自动化流程,展示Python的灵活性和丰富的生态系统在报表自动化中的卓越表现,从设置虚拟环境到使用Pandas和Matplotlib处理数据,到借助APScheduler实现定期自动化,每个步骤都得到详尽阐述
    2023-12-12
  • python自动化测试selenium操作下拉列表实现

    python自动化测试selenium操作下拉列表实现

    这篇文章主要为大家介绍了python自动化测试selenium操作下拉列表实现方式,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-11-11
  • 基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解

    基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解

    下面小编就为大家带来一篇基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Python使用TextRank算法提取关键词

    Python使用TextRank算法提取关键词

    textrank是在pagerank的基础上提出来的。PageRank对于每个网页页面都给出一个正实数,表示网页的重要程度,PageRank值越高,表示网页越重要,在互联网搜索的排序中越可能被排在前面
    2022-12-12
  • Python StringIO及BytesIO包使用方法解析

    Python StringIO及BytesIO包使用方法解析

    这篇文章主要介绍了Python StringIO及BytesIO包使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06

最新评论