Python爬虫知识体系-----requests-----持续更新

news2024/12/23 0:05:08
数据科学、数据分析、人工智能必备知识汇总-----Python爬虫-----持续更新:https://blog.csdn.net/grd_java/article/details/140574349

文章目录

  • 一、安装和基本使用
    • 1. 安装
    • 2. 基本使用
    • 3. response常用属性
  • 二、get请求
  • 三、post请求
  • 四、代理

一、安装和基本使用

1. 安装

  1. 和解析库urllib几乎一摸一样,但是有些业务场景,用request更加方便

最好对比utllib学习:https://blog.csdn.net/grd_java/article/details/140589367

  1. 官方文档:https://requests.readthedocs.io/projects/cn/zh-cn/latest/

企业中用的最多的就是requests,底层实现就是urllib,在python2和python3中通用,方法完全一样;简单易用

安装requests
  1. 执行命令pip install requests即可安装
    在这里插入图片描述
  2. 代码中导包不报错表示安装成功
    在这里插入图片描述

2. 基本使用

基本使用
'''导包(start)'''
import requests
'''导包(end)'''
url = 'http://www.baidu.com'
# 通过get方式请求url
response = requests.get(url)
# 设置编码格式
response.encoding = 'utf-8'
# response对象的类型为Response类型,和urllib的HttpResopnse对象是不一样的
print(type(response))
# 以字符串形式返回网页源码
print(response.text)
# 获取响应状态码
print(response.status_code)
# 获取请求的url
print(response.url)
# 获取响应头
print(response.headers)
# 获取响应的字节类型
print(response.content)

3. response常用属性

response.text # 响应体 str类型
response.encoding #从HTTP header中猜测的响应内容的编码方式
respones.content #响应体bytes类型
response.status_code #响应状态码
response.request.headers #响应对应的请求头
response.headers #响应头
response.cookies #响应的cookie(经过了set-cookie动作)
response.url #获取访问的url
response.json() #获取ison数据 得到内容为字典(如果接口响应体的格式是ison格式时)
response.ok
	# 如果status code小于200,response.ok返回True。
	# 如果status code大于200,response.ok返回False.

response.text和response.content的区别


  1. response.text
  1. 类型:str
  2. 解码类型: requests模块自动根据HTTP 头部对响应的编码作出有根据的推测,推测的文本编码
  3. 如何修改编码方式:response.encoding=“gbk/UTF-8”
  1. response.content
  1. 类型:bytes
  2. 解码类型:没有指定
  3. 如何修改编码方式:response.content.deocde(“utf8")

获取网页源码的通用方式:


  1. response.content.decode()
  2. response.content.decode(“UTF-8”)
  3. response.text

以上三种方法从前往后尝试,能够100%的解决所有网页解码的问题。所以,更推荐使用 response.content.deocde()的方式获取响应的html页面

二、get请求

同样是百度,例如百度北京看搜索结果。requests库作为独属于python的,是不需要像urllib一样对参数编码的


在这里插入图片描述

'''导包(start)'''
import requests
'''导包(end)'''

url = 'http://www.baidu.com/s?' # 路径中的?可加可不加
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0"}
data = {
    'wd':'北京'
}
# def get(url, params=None, **kwargs):
# url       请求资源路径
# params    参数
# kwargs    字典
response = requests.get(url=url, params=data, headers=headers)
response.encoding = 'utf-8'
content = response.text
print(content)
# 也可以一行搞定哦
print(response.content.decode('utf-8'))

可见对比urllib有以下几点不同


  1. 参数使用params传递
  2. 参数无需urlencode编码
  3. 不需要请求对象的定制
  4. 请求资源路径(url)中的?可以加也可以不加

把网络上的图片保存到本地

三、post请求

我们使用讲解urllib中的百度翻译的案例,看看实现同样的效果和urllib有何区别
在这里插入图片描述

  1. post请求,不需要编解码
  2. 请求参数是经典的data
  3. 不需要请求对象的定制
'''导包(start)'''
import requests
'''导包(end)'''

url = 'https://fanyi.baidu.com/sug'
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0"}
data = {
    "kw":"spider"
}
# def post(url, data=None, json=None, **kwargs):
# url       请求资源路径
# data      参数对象
# json      json对象
# kwargs    字典
# 我们以传输data对象为例,传输json同理,将data换成json即可
response = requests.post(url=url, data=data, headers=headers)
content = response.text
# 因为content返回的不是utf-8编码格式,我们看起来比较费劲
# 通过json库将其转为utf-8
import json
obj = json.loads(content)
print(obj)

四、代理

依然和urllib完全一样的操作
在这里插入图片描述

'''导包(start)'''
import requests
'''导包(end)'''

url = 'http://www.baidu.com/s?'
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0"}
data = {
    "wd":"ip"
}
# 1. 获取代理handler对象,并指定代理ip字典proxies
proxies = {
    'http': '218.87.205.38:20433',
}
response = requests.get(url = url, params=data, headers=headers,proxies=proxies)
content = response.text
with open('daili.html','w',encoding='utf-8') as fp:
    fp.write(content)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2241893.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

区块链技术在数据安全中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 区块链技术在数据安全中的应用 区块链技术在数据安全中的应用 区块链技术在数据安全中的应用 引言 区块链技术基础 1.1 区块链的…

RK3568平台开发系列讲解(GPIO篇)GPIO的sysfs调试手段

🚀返回专栏总目录 文章目录 一、内核配置二、GPIO sysfs节点介绍三、命令行控制GPIO3.1、sd导出GPIO3.2、设置GPIO方向3.3、GPIO输入电平读取3.4、GPIO输出电平设置四、Linux 应用控制GPIO4.1、控制输出4.2、输入检测4.3、使用 GPIO 中断沉淀、分享、成长,让自己和他人都能有…

电商系统开发:Spring Boot框架实战

3 系统分析 当用户确定开发一款程序时,是需要遵循下面的顺序进行工作,概括为:系统分析–>系统设计–>系统开发–>系统测试,无论这个过程是否有变更或者迭代,都是按照这样的顺序开展工作的。系统分析就是分析系…

从电动汽车到车载充电器:LM317LBDR2G 线性稳压器在汽车中的多场景应用

附上LM317系列选型: LM317BD2TG-TO-263 LM317BTG-TO-220 LM317BD2TR4G-TO-263 LM317D2TG-TO-263 LM317D2TR4G-TO-263 LM317TG-TO-220 LM317LBDR2G-SOP-8 LM317LDR2G-SOP-8 LM317MABDTG-TO-252 LM317MABDTRKG-TO-252 LM317MA…

Linux下MySQL的简单使用

Linux下MySQL的简单使用 导语MySQL安装与配置MySQL安装密码设置 MySQL管理命令myisamchkmysql其他 常见操作 C语言访问MYSQL连接例程错误处理使用SQL 总结参考文献 导语 这一章是MySQL的使用,一些常用的MySQL语句属于本科阶段内容,然后是C语言和MySQl之…

前端 JS 实用操作总结

目录 1、重构解构 1、数组解构 2、对象解构 3、...展开 2、箭头函数 1、简写 2、this指向 3、没有arguments 4、普通函数this的指向 3、数组实用方法 1、map和filter 2、find 3、reduce 1、重构解构 1、数组解构 const arr ["唐僧", "孙悟空&quo…

力扣 LeetCode 541. 反转字符串II(Day4:字符串)

解题思路&#xff1a; i可以成段成段的跳&#xff0c;而不是简单的i class Solution {public String reverseStr(String s, int k) {char[] ch s.toCharArray();// 1. 每隔 2k 个字符的前 k 个字符进行反转for (int i 0; i < ch.length; i 2 * k) {// 2. 剩余字符小于 …

鸿蒙版APP-图书购物商城案例

鸿蒙版-小麦图书APP是基于鸿蒙ArkTS-API12环境进行开发&#xff0c;不包含后台管理系统&#xff0c;只有APP端&#xff0c;页面图书数据是从第三方平台(聚合数据)获取进行展示的&#xff0c;包含登录&#xff0c;图书类别切换&#xff0c;图书列表展示&#xff0c;图书详情查看…

卡尔曼滤波:从理论到应用的简介

卡尔曼滤波&#xff08;Kalman Filter&#xff09;是一种递归算法&#xff0c;用于对一系列噪声观测数据进行动态系统状态估计。它广泛应用于导航、控制系统、信号处理、金融预测等多个领域。本文将介绍卡尔曼滤波的基本原理、核心公式和应用案例。 1. 什么是卡尔曼滤波&#x…

学习日志011--模块,迭代器与生成器,正则表达式

一、python模块 在之前学习c语言时&#xff0c;我们学了分文件编辑&#xff0c;那么在python中是否存在类似的编写方式&#xff1f;答案是肯定的。python中同样可以实现分文件编辑。甚至还有更多的好处&#xff1a; ‌提高代码的可维护性‌&#xff1a;当代码被分成多个文件时…

CSS 语法规范

基本语法结构 CSS 的基本语法结构包含 选择器 和 声明块,两者共同组成 规则集。规则集可以为 HTML 元素设置样式,使页面结构和样式实现分离,便于网页的美化和布局调整。 CSS 规则集的结构如下: selector {property: value; }选择器(Selector) 选择器用于指定需要应用…

Bag Graph: Multiple Instance Learning Using Bayesian Graph Neural Networks文献笔记

基本信息 原文链接&#xff1a;[2202.11132] Bag Graph: Multiple Instance Learning using Bayesian Graph Neural Networks 方法概括&#xff1a;用图&#xff08;贝叶斯GNN框架&#xff09;来建模袋之间的相互作用&#xff0c;并使用图神经网络&#xff08;gnn&#xff09…

Spark 共享变量:广播变量与累加器解析

Spark 的介绍与搭建&#xff1a;从理论到实践_spark环境搭建-CSDN博客 Spark 的Standalone集群环境安装与测试-CSDN博客 PySpark 本地开发环境搭建与实践-CSDN博客 Spark 程序开发与提交&#xff1a;本地与集群模式全解析-CSDN博客 Spark on YARN&#xff1a;Spark集群模式…

前海华海金融创新中心的工地餐点探寻

​前海的工地餐大部分都是13元一份的哈。我在前海华海金融创新中心的工地餐点吃过一份猪杂饭&#xff0c;现做13元一份。我一般打包后回公司吃或直接桂湾公园找个环境优美的地方吃饭。 ​我点的这份猪杂汤粉主要是瘦肉、猪肝、肉饼片、豆芽和生菜&#xff0c;老板依旧贴心问需要…

借助Excel实现Word表格快速排序

实例需求&#xff1a;Word中的表格如下图所示&#xff0c;为了强化记忆&#xff0c;希望能够将表格内容随机排序&#xff0c;表格第一列仍然按照顺序编号&#xff0c;即编号不跟随表格行内容调整。 乱序之后的效果如下图所示&#xff08;每次运行代码的结果都不一定相同&#x…

【C语言指南】C语言内存管理 深度解析

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《C语言指南》 期待您的关注 引言 C语言是一种强大而灵活的编程语言&#xff0c;为程序员提供了对内存的直接控制能力。这种对内存…

【Linux网络编程】简单的UDP网络程序

目录 一&#xff0c;socket编程的相关说明 1-1&#xff0c;sockaddr结构体 1-2&#xff0c;Socket API 二&#xff0c;基于Udp协议的简单通信 一&#xff0c;socket编程的相关说明 Socket编程是一种网络通信编程技术&#xff0c;它允许两个或多个程序在网络上相互通信&…

Kafka入门:Java客户端库的使用

在现代的分布式系统中&#xff0c;消息队列扮演着至关重要的角色&#xff0c;而Apache Kafka以其高吞吐量、可扩展性和容错性而广受欢迎。本文将带你了解如何使用Kafka的Java客户端库来实现生产者&#xff08;Producer&#xff09;和消费者&#xff08;Consumer&#xff09;的基…

STM32设计学生宿舍监测控制系统

目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 电路图采用Altium Designer进行设计&#xff1a; 三、实物设计图 四、程序源代码设计 五、获取资料内容 前言 随着科技的飞速发展和智能化时代的到来&#xff0c;学生宿舍的安全、舒适…

HTML5实现俄罗斯方块小游戏

文章目录 1.设计来源1.1 主界面1.2 皮肤风格1.2 游戏中界面1.3 游戏结束界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/143788449 HTML5实现俄罗斯方块小游戏&#x…