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

news2024/9/21 8:00:08

目录

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.txt

import requests

url='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.txt

import requests

url='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 requests

url="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.coloradmin.cn/o/536305.html

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

相关文章

实验室信息管理系统源码,LIS系统源码

云LIS系统是医院信息管理的重要组成部分之一,系统集申请、采样、核收、计费、检验、审核、发布、质控、查询、耗材控制等检验科工作为一体的网络管理系统。LIS系统不仅是自动接收检验数据,打印检验报告,系统保存检验信息的工具,而…

平抑风电波动的电-氢混合储能容量优化配置(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

22届硕士,去年秋招拿了字节跳动offer,有一说一,不是很难进

自从抖音短视频APP火了之后,起公司字节跳动也逐渐向着大厂靠拢,相信大家都已经对这家公司很熟悉了,尤其是近几年来,对它的认识也在不断刷新,它惊人的发展速度确实让行业内人刮目相看,如今很多年轻人也想要挤…

【工作记录】springsecurity从入门到实战(一)

一、介绍 在web应用开发中,安全无疑是十分重要的,目前最流行的安全框架莫过于shiro和springsecurity了。 以下是二者简单的一个对比: SpringSecurityShiro基本功能完善完善文档完善程度强大强大社区支持度依托于Spring,社区支持强大强大集…

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

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

代码随想录算法训练营day43 | 1049. 最后一块石头的重量 II ,494. 目标和,474.一和零,01背包问题总结

代码随想录算法训练营day43 | 1049. 最后一块石头的重量 II ,494. 目标和,474.一和零 1049. 最后一块石头的重量 II解法一:动态规划 494. 目标和解法一:动态规划 474.一和零解法一:动态规划 01背包问题总结 1049. 最后…

商场导航地图系统,商场导航怎么实现?

商场导航怎么实现?在商场里面,手机上的导航往往接收不了信号或者不支持,由于室内不只是平面的,跟室外导航有很大的区别,因此,室内如何快速导航就成了现代化发展的趋势。电子地图作为大家最喜闻乐见的高效应…

交换机欺骗(Switch Spoofing)简介

交换机欺骗是修改设备的 MAC 地址以伪装成授权交换机端口并获得对目标网络的访问权限的过程。由于 MAC 地址对于特定设备是唯一的,因此大多数网络使用这些 MAC 地址来验证设备并与其通信或建立网络连接。通过欺骗授权设备或更简单地说,网络识别为“受信任…

redis_exporter 部署

目录 - 下载地址- 启动vim ./start.shvim ./stop.sh - 配置prometheus - 下载地址 https://github.com/oliver006/redis_exporter/releases - 启动 为了方便辨认 我更改了它的端口,并编了./start.sh和./stop.sh两个脚本方便以后启动,语句如下&#xf…

机器学习之逻辑回归、一(学习理论)

P(D|θ) 文章目录 一、前言二、逻辑回归的由来三、到底什么是逻辑回归(1). 先对逻辑回归有个大概感觉(2).逻辑回归与线性回归的区别(3).sigmoid函数(4)目标函数&#xf…

有关于ChatGPT你需要了解的内容应该都在这了,看这一篇就够啦

在国内用了很长一段时间的ChatGPT,每次跟小白,哪怕是用ChatGPT的人交流的时候,都感觉解释不清,正好今天周末,给大家整理一篇关于ChatGPT的科普文,想要了解或使用ChatGPT的人,一定要看完~~~ 什么…

内网渗透(CS与MSF联动) ATTCK实战系列一红队实战(一)

靶场下载地址: http://vulnstack.qiyuanxuetang.net/vuln/detail/2/ 拓扑图 环境配置 win7网络配置情况: 外网 内网域网络 Win2K3网络配置情况: 内网域网络 win2008(域控)网络配置情况: 内网域网络 渗透过程 开始之前,先到win7上开启phpstudy 打开网页&#…

安装 kubeadm

安装 kubeadm、kubelet 和 kubectl 基于Red Hat的发行版本 1、写入软件源 cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] nameKubernetes baseurlhttps://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch enabled1 gpgcheck1 …

盘点谷歌26个插件生态;WPS AI上新与测评;Prompt中文指南;ChatGPT最新联网插件评测 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 『Google 最新发布的26个插件&#xff0c;哪些ChatGPT也有&#xff1f;』插件生态初见端倪 ▢ Google自家生态 (9个)&#xff1a;办公…

CATIA操作经典技巧问答

如何快速知道当前的CATIA作图区上的零件的放大比例? 答:选中TOOLS----->OPTIONS----->VISUALIZATION----> DISPLAY CURRENT SCALE IN PARALLEL, MODE 的选项. 在屏幕的右下方的数值表示当前作图区内的几何体的显示比例。 如何快速定义草图方向? 答:按CTRL键点选在…

Crypto VC 们最近有何动向?7 个工具助你轻松追踪

http://www.btcwbo.com/7289.html 加密 VC 和基金对初创项目的投资收益超过百万美元。它们为具有增长潜力的早期创业公司提供资金、技术支持和专业知识&#xff0c;作为交换&#xff0c;它们将获得这些公司的股份&#xff08;代币&#xff09;。 你可能经常会听到“VC 投了”之…

nacos注册中心源码分析二之服务发现

nacos服务发现 服务发现是客户端发起负载均衡(feign)调用接口的时候内部第一次调用nacos服务端接口的时候去调用的 后续调用基本上都是从客户端的缓存列表里边去取&#xff0c;拿不到才会向服务端发起调用 如果想看这一块代码可以看下ribbion源码分析ribbon源码分析 上一篇&am…

什么是互联网交换中心?为什么它很重要?

互联网交换中心&#xff08;Internet Exchange Point, IXP&#xff09;是为促进互联网骨干网的网间互联和公平竞争而设置的运营商间进行数据网际交换的机构&#xff0c;是为互联网业者提供空间进行网络互连、交换流量和资源的服务场所&#xff0c;互联网业者可以在这里利用机架…

基于自定义知识库回答问题的ChatGPT-

前言 ChatGPT是一个强大的语言模型&#xff0c;利用大规模的自然语言处理和机器学习算法&#xff0c;可以进行自然而流畅的对话&#xff0c;理解自然语言问题和回答&#xff0c;相信在座各位&#xff0c;尤其是程序员的你&#xff0c;肯定不可能还没使用过ChatGPT。 ChatGPT能…

属于开发者的交流,openGauss SIG版本规划工作会议来啦!

想参与SIG组未来半年的规划与工作&#xff1f; 想与开发者们近距离探讨需求与解决方案&#xff1f; 想将您的需求合入到openGauss的下个版本&#xff1f; 想在社区年度Summit上展现成果&#xff1f; 那就不能错过这个属于开发者的交流盛会&#xff01; 社区年度开发者大会…