python3 爬虫相关学习3:response= requests.get(url)的各种属性

news/2024/4/29 22:11:24/文章来源:https://blog.csdn.net/xuemanqianshan/article/details/130690308

目录

1  requests.get(url) 的各种属性,也就是response的各种属性

2 下面进行测试

2.1 response.text

1.2  response.content.decode()

1.2.1 response.content.decode() 或者  response.content.decode("utf-8")

1.2.2   response.content.decode("GBK") 报错

1.2.3 关于编码知识

1.3 print(response.url)

 1.4 print(response.status_code)

 1.5 print(response.request.headers)

1.6 print(response.headers)

1.7 print(response.request._cookies)

 1.8 print(response.cookies)

3 继续


1  requests.get(url) 的各种属性,也就是response的各种属性

  • 接触的requests模块的常用功能:
  • 一般把 response = requests.get(url)

requests.get(url)的各种属性

  • print(response.text)
  • print(response.content.decode())          # 注意这里!
  • print(response.url)                         # 打印响应的url
  • print(response.status_code)                 # 打印响应的状态码
  • print(response.request.headers)             # 打印响应对象的请求头
  • print(response.headers)                     # 打印响应头
  • print(response.request._cookies)            # 打印请求携带的cookies
  • print(response.cookies)                     # 打印响应中携带的cookies
     

2 下面进行测试


#E:\work\FangCloudV2\personal_space\2学习\python3\py3_test1.txtimport requestsurl='https://baidu.com'
response=requests.get(url)
#print(response.text)
print(" ")
print(response.content.decode())
print(" ")
print(response.url)
print(" ")
print(response.status_code)
print(" ")
print(response.request.headers)
print(" ")
print(response.headers)
print(" ")
print(response.request._cookies)
print(" ")
print(response.cookies)

2.1 response.text

也就是 requests.get(url).text

  • response.text 是 requests模块自动根据HTTP 头部对响应的编码作出有根据的推测,推测的文本编码
  • 返回的类型是,str 类型

  • 下面是print(response.text) 的结果
  • 请求baidu.com 可以看到返回的,有一些是乱码
  • 英文是对的,乱码是中文没有解析正确导致。

1.2  response.content.decode()

  • 也就是 requests.get(url).content
  • response.content 返回的内容,没有指定解码类型,需要解码
  • 缺省默认的是 "utf-8"
  • 返回的类型是,byte

1.2.1 response.content.decode() 或者  response.content.decode("utf-8")

  • print(response.content.decode())          # 注意这里!
  • 要选择合适的decode()
  • 比如这里选择  decode("utf-8")  或者缺省默认也是 utf-8, 汉字显示就正常了不乱码了
  • 如果解码选择了 "GBK" 就报错,不同地方需要注意
#E:\work\FangCloudV2\personal_space\2学习\python3\py3_test1.txtimport requestsurl='https://baidu.com'
response=requests.get(url)
#print(response.text)
print(" ")
print(response.content.decode())

1.2.2   response.content.decode("GBK") 报错

1.2.3 关于编码知识

  • 如下,还没有整理完
编码方式: 将计算机的二级制数据一一映射设到各种文字符号编码字符集二级制的不同数字---映射到某些文字符号的 对应集合/可查表/字典等
   不同的子集   
ANSI编码系统默认的编码方式中文GBK,英文ASCII ,繁体中文big5   
也称MBCS不同操作系统下,对应不同的编码字符集     
 一种ANSI码不能保存大于1种以上的语言文字     
unicode编码讲世界上全部语言文字都保存在一种编码内Unicode字符集utf-8编码,有bom无BOMutf-8 兼容 ascii
  utf-16编码 
  utf-32编码 
   
GBXXX编码汉字编码GBXXX字符集GB2312-80  和ascii冲突
   GBK655362^16双字节编码,
(1个字节是8位2进制,2个字节是16位)
编码范围是0x8140~0xFEFE
共收录了21003个汉字,883个字符
   GB18030   
       
ascii 编码美国的ascii 字符集标准ascii 字符集7位2^7128个字符
  扩展ascii 字符集8位2^8256个字符
UCS-2, UCS-4 UCS-通用字符集ISO  双字节编码
       
       
BIG5编码BIG5字符集繁体汉字,感觉可以忘了这玩意
   
   
源字符集编码      
       
可执行字符集编码  
       

 

1.3 response.url

  • response.url

 1.4 response.status_code

  • 也就是 requests.get(url).status_code
  • 返回的 状态码

200成功
302跳转,新的url在响应的Location头中给出
303浏览器对于POST的响应进行重定向至新的url
307浏览器对于GET的响应重定向至新的url
403资源不可用;服务器理解客户的请求,但拒绝处理它(没有权限)
404找不到该页面
500服务器内部错误
503服务器由于维护或者负载过重未能应答,在响应中可能可能会携带Retry-After响应头;有可能是因为爬虫频繁访问url,使服务器忽视爬虫的请求,最终返回503响应状态码
403

资源不可用;服务器理解客户的请求,但拒绝处理它(没有权限)

插入知识:网页的基础跳出命令

  • 网页上点右键,查看网页源代码---查看网页的html格式网页
  • (F12也可以打开)网页上点右键,检查-----调出网页的控制台页面

1.5 响应头response.headers

  • 也就是 requests.get(url).headers
  • 响应头反映的是,网站网页的信息
  • 比如一些时间,内容,连接情况等
  • 比较用python 爬虫连接的,requests.get(url) 的

  • 而用PC的网页打开的就不一样

 1.6 response.request.headers

  • 也就是 requests.get(url).request.headers
  • 响应对象的请求头,也就是 访问网页的 客户端(有可能是pc /phone /或者python等)的情况
  • 明显看出,
  • 爬虫连接的,显示 User-Agent': 'python-requests/2.30.0'
  • PC的浏览器上网的检查里显示的,显示

    Accept: text/html,application/xhtml+xml,application/xml

其中 request.headers里面的这个可以当作 request.headers的参数内容

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36

插入知识:cookies

  • 百度得:Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息 
  • 网站经常利用请求头中的Cookie字段来做用户访问状态的保持
  • 也就是  缓存
  • 存储在客户端上,而不是网页得服务器端!
  • 可能存储:用户名,密码,注册信息等内容
  • 也可能只是一个唯一标识得临时ID,方便网站辨识你,方便再session内继续连接,而不用重复识别


 

 1.7 print(response.cookies)

  • 也就是 requests.get(url).cookies
  • 网页得cookies

 1.8 print(response.request._cookies)

也就是 requests.get(url).request.cookies

客户端的cookies

3 带参数的  requests.get(url,para)

3.1  requests.get(url,headers=headers)

  • 注意headers正确写法
  • headers是一个字典,写法是 {"":"" , "":""}  ,就是需要是  key:value 键值对
  • headers={"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"}

3.1.1常见的headers错误写法

  • 常见的headers错误写法
  • headers="user-agentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"
  • headers={"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"}
  • headers={"user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"}

这个报错原因,是不懂 headers的写法

headers是一个字典,写法是 {"":"" , "":""} 

3.2 带参数headers后的输出内容

  • 其中headers是直接拷贝的 pc 网页检查里的 requests.get(url)里 request.headers里最下面的内容
  • 目的是为了冒充pc客户端的浏览器,访问网页的感觉

#print(response.text)
#print(response.content.decode())

 print(response.headers)

print(response.request.headers)

3.3 其他写法

  • ? 查询关键字/ 后面跟的是查询字符串 / 请求参数
  • 也可以用字典的写法  params=kw

写法1

url = 'https://www.baidu.com/s?wd=python'

写法2

url = 'https://www.baidu.com/s?
kw = {'wd': 'python'}
response = requests.get(url, headers=headers, params=kw)

3.3 带参数cookies 或者 headers 带包含cookies(试验不成功 )

  •  带cookies有两种写法
  • requests.get(url,headers=headers)     #其中heads字典里包含cookies
  •  requests.get(url,headers=headers, cookies) 
  • resp = requests.get(url, headers=headers, cookies=cookies_dict)
  • cookie一般是有过期时间的,一旦过期需要重新获取
  • cookies = {"cookie的name":"cookie的value"}
  • 将cookie字符串转换为cookies参数所需的字典:
  • cookies_dict = {cookie.split('=')[0]:cookie.split('=')[-1] for cookie in cookies_str.split('; ')}
  • 使用requests获取的resposne对象,具有cookies属性。该属性值是一个cookieJar类型,包含了对方服务器设置在本地的cookie。我们如何将其转换为cookies字典呢?
  • 其中response.cookies返回的就是cookieJar类型的对象

  • cookies_dict = requests.utils.dict_from_cookiejar(response.cookies)

cookies 试验不成功 

 

 

import requestsurl="https://www.jianshu.com"headers={"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36","cookies":cookie1}response=requests.get(url,headers=headers)print(response.text)

3.4 response = requests.get(url, timeout=3)

  • timeout 设置超时时间
  • timeout=3表示:发送请求后,3秒钟内返回响应,否则就抛出异常

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++类和对象再探

文章目录 const成员再谈构造函数成员变量的定义函数体内赋值初始化列表 隐式类型转换explicitstatic成员 const成员 我们知道在调用类的成员函数时,会有一个默认的this指针且这个this指针时不可以被修改的,例如在日期类中,会有隐式的Date * const this;注意这里默认会在this前…

Flutter仿写微信导航栏快速实现页面导航

文章目录 前言使用TabBar实现TabBar介绍TabBar的重要属性说明TabBarView介绍TabBarView的重要属性TabBar总结TabBar实现底部导航的例子 BottomNavigationBar实现BottomNavigationBar介绍BottomNavigationBar实现底部导航栏的例子 总结BottomNavigationBarTabBar根据实际情况选择…

【Vue基础】Element案例学习-智能学习辅助系统

一、效果展示 初步设计一个系统&#xff0c;有目录、搜索栏、表格操作等。 二、参考代码 主要关注上图“App.vue”和“BtestView.vue”两个文件的代码 1、App.vue <template><div ><!-- <h1>{{ message }}</h1> --><!-- <element-view&…

暴涨700w播放,星穹铁道恰饭频频登上B站爆款热榜!

B站作为现在年轻一代聚集的多元化社区&#xff0c;游戏内容则是社区内受众较为广泛的存在&#xff0c;而星铁作为面向年轻群体的回合制游戏&#xff0c;自然是赢得B站核心用户群体的青睐。 4月26日&#xff0c;暌违已久的手游《崩坏&#xff1a;星穹铁道》&#xff08;后文简称…

JavaEE(系列6) -- 多线程(解决线程不安全系列1-- 加锁(synchronized)与volatile)

首先我们回顾一下上一章节引起线程不安全的原因 本质原因:线程在系统中的调度是无序的/随机的(抢占式执行) 1.抢占式执行 2.多个线程修改同一个变量. 一个线程修改一个变量>安全 多个线程读取同一个变量>安全 多个线程修改不同的变量>安全 3.修改操作,不是原子的.(最…

Python带你实现批量自动点赞小程序

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 所用知识点: 动态数据抓包 requests发送请求 json数据解析 开发环境: python 3.8 运行代码 pycharm 2022.3 辅助敲代码 requests 请求模块 &#xff0c;第三方&#xff0c;需安装 win R 输入cmd 输入安装命令 pip inst…

初步认识性能测试和完成一次完整的性能测试

上一篇博文主要通过两个例子让测试新手了解一下测试思想&#xff0c;和在做测试之前应该了解人几点&#xff0c;那么我们在如何完成一次完整的性能测试呢&#xff1f; 测试报告是一次完整性能测试的体现&#xff0c;所以&#xff0c;这里我给出一个完整的性能测试报告&#xff…

springBoot中使用redis实现分布式锁实例demo

首先 RedisLockUtils工具类 package com.example.demo.utils;import org.junit.platform.commons.util.StringUtils; import org.springframework.context.annotation.Bean; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.red…

SAP入门到放弃系列之需求管理的基本要素

需求管理目标&#xff1a; 一般而言&#xff0c;生产计划&#xff08;PP&#xff09;的总体目标&#xff0c;特别是需求管理的总体目标是通过减少以下内容来更好地为客户服务&#xff1a; 补货提前期存货成本 需求管理的要素&#xff1a; 需求管理工作的主要要素广义上可分…

❤ cannot read properties of null(reading appendChild)解决办法

❤ 操作元素报&#xff1a;cannot read properties of null(reading appendChild)解决办法 1、场景&#xff1a; 写的一个js渲染&#xff0c;但是出了个小问题&#xff0c;cannot read properties of null(reading appendChild)报错。 <div id"divps" class&qu…

机器学习项目实战-能源利用率 Part-1(数据清洗)

1. 项目背景 2009年的《当地法案84号》&#xff0c;或纽约市基准法案&#xff0c;要求对能源和用水量进行年度基准测试和披露信息。被覆盖的财产包括单个建筑物的税收地块&#xff0c;其总建筑面积大于50,000平方英尺&#xff08;平方英尺&#xff09;&#xff0c;以及具有超过…

OpenAI新作Shap-e算法使用教程

一、知识点 Shap-e是基于nerf的开源生成3d模型方案。它是由如今热火朝天的Open AI公司&#xff08;chatgpt&#xff0c;Dell-E2&#xff09;开发、开源的。Shap-e生成的速度非常快&#xff0c;输入关键词即可生成简单模型&#xff08;限于简单单体模型&#xff09;。 二、环境…

别去外包,干了三年,废了....

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

jetson nx 用windows远程连接

VNC Viewer远程连接 一、jetson nx配置vnc 1、安装客户端 sudo apt-get install xrdp vnc4server xbase-clients2、进入nano/nx桌面&#xff0c;打开“Setting–>Desktop sharing”&#xff0c;没反应&#xff0c;据说是bug&#xff0c;我试过nano和nx都一样。首先输入下…

springboot+jsp法律知识分享网站普法平台

法律知识分享平台&#xff0c;主要的模块包括查看主页、个人中心、用户管理、律师事务所管理、律师管理、法律资讯管理、案例分析管理、案例分享管理、法规信息管理、法规分享管理、留言信息管理、留言回复管理、论坛管理、系统管理等功能。系统中管理员主要是为了安全有效地存…

Docker笔记7 | 如何使用 Docker Compose 搭建一个拥有权限 认证、TLS 的私有仓库?

7 | 如何使用 Docker Compose 搭建一个拥有权限 认证、TLS 的私有仓库&#xff1f; 1 准备工作2 准备站点证书2.1 创建CA私钥2.2 创建CA根证书请求文件2.3 配置CA根证书2.4 签发根证书2.5 生成站点SSL私钥2.6 私钥生成证书请求文件2.7 配置证书2.8 签署站点SSL证书 3 配置私有仓…

低代码行业的发展真的可以让复杂的代码编写一去不复返?

前言 传统的软件开发过程往往需要耗费大量的时间和精力&#xff0c;因为开发人员需编写复杂的代码以完成各种功能。 低代码行业的发展&#xff0c;正好解决了这个问题&#xff0c;让复杂的代码编写一去不复返了。 文章目录 前言引入强大的平台总结 引入 低代码平台 是一种通过可…

Go基础篇:接口

目录 前言✨一、什么是接口&#xff1f;二、空接口 interface{}1、eface的定义2、需要注意的问题 三、非空接口1、iface的定义2、itab的定义3、itab缓存 前言✨ 前段时间忙着春招面试&#xff0c;现在也算告一段落&#xff0c;找到一家比较心仪的公司实习&#xff0c;开始慢慢回…

yum和repo详细解析

目录 一、rpm、yum、repo 二、repo文件详细解析 三、常用命令 四、更改epel.repo为清华源 一、rpm、yum、repo RPM RPM(Red-hat Package Manager)&#xff0c;是一个由红帽最早开发出来的包管理器&#xff0c;目前已经是大多数Linux发行的默认包管理器。RPM管理的包都是以…

程序员一个月拿两万,得知卖猪肉可以赚五万,你是选择做程序员还是卖猪肉?

在知乎上看到这么个帖子&#xff0c;觉得挺有意思&#xff0c;大家一起瞧瞧&#xff1f; 对此&#xff0c;我也看到了许多犀利的回答哈 **A&#xff1a;**我反过来问你&#xff0c;如果一对夫妇卖猪肉一个月只能挣一万&#xff0c;听说一名程序员一个月拿五万&#xff0c;他们…