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

这篇具有很好参考价值的文章主要介绍了python3 爬虫相关学习3:response= requests.get(url)的各种属性。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

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 response.url

 1.4 response.status_code

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

1.5 响应头response.headers

 1.6 response.request.headers

插入知识:cookies

 1.7 print(response.cookies)

 1.8 print(response.request._cookies)

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

3.1  requests.get(url,headers=headers)

3.1.1常见的headers错误写法

3.2 带参数headers后的输出内容

3.3 其他写法

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

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

3.6 response = requests.get(url,proxies=proxies)  未试验


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 下面进行测试

respone =requests(),python,java,numpy


#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 可以看到返回的,有一些是乱码
  • 英文是对的,乱码是中文没有解析正确导致。

respone =requests(),python,java,numpy

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())

respone =requests(),python,java,numpy

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

respone =requests(),python,java,numpy

1.2.3 关于编码知识

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

 respone =requests(),python,java,numpy

1.3 response.url

  • response.url

respone =requests(),python,java,numpy

 1.4 response.status_code

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

respone =requests(),python,java,numpy

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

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

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

  • 网页上点右键,查看网页源代码---查看网页的html格式网页
  • (F12也可以打开)网页上点右键,检查-----调出网页的控制台页面
  • 检查
  • 空白处点检查就是下面的界面
  • 选中某一个元素如图片,点击检查可以定位到当前图片的 标记位置

respone =requests(),python,java,numpy

  • 检查
  • 按F12
  • 看的内容不一样
  • 之后可以补充一下,详细的每个分栏下面的内容
  • 待补充

1.5 响应头response.headers

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

respone =requests(),python,java,numpy

respone =requests(),python,java,numpy

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

respone =requests(),python,java,numpy

 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

respone =requests(),python,java,numpy

respone =requests(),python,java,numpy

respone =requests(),python,java,numpy

其中 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

respone =requests(),python,java,numpy

 1.8 print(response.request._cookies)

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

客户端的cookies

respone =requests(),python,java,numpy

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是一个字典,写法是 {"":"" , "":""} 

respone =requests(),python,java,numpy

3.2 带参数headers后的输出内容

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

respone =requests(),python,java,numpy

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

respone =requests(),python,java,numpy

 print(response.headers)respone =requests(),python,java,numpy

print(response.request.headers)

respone =requests(),python,java,numpy

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.4 带参数cookies 或者 headers 带包含cookies(试验不成功 )

  •  带cookies有3种写法
  • 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 试验不成功 

respone =requests(),python,java,numpy

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.5 response = requests.get(url, timeout=3)

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

3.6 response = requests.get(url,proxies=proxies)  未试验

  • proxy 用来设置代理
  • 正向代理,帮助客户端转发请求的,比如vpn
  • 反向代理,帮助服务器转服请求的,比如nginx 反向代理
  • 代理分为3种
  • 透明代理
  • 匿名代理
  • 高匿代理
REMOTE_ADDR =          Proxy IP / proxy IP / proxy IP
HTTP_VIA =             Proxy IP/ proxy IP / not determined
HTTP_X_FORWARDED_FOR = Your IP / proxy IP/ not determined


代理协议

  • http协议代理,目标url是http
  • https协议代理
  • socks隧道代理 ,只简单传递数据包,不关心是那种协议

proxy是字典形式的,如果有多个数据,会根据目标url选择一种proxy

response = requests.get(url, proxies=proxies)
proxies = { 
    "http": "http://12.34.56.79:9527", 
    "https": "https://12.34.56.79:9527", 
   }
 文章来源地址https://www.toymoban.com/news/detail-770665.html

 
 
 
 
 
                    

到了这里,关于python3 爬虫相关学习3:response= requests.get(url)的各种属性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 爬虫的学习 day01 ,爬虫的基本知识, requests 和 charde模块, get函数的使用

    1.1什么是网络爬虫 网络爬虫,又称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。 1.2  网络爬虫的特点 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万

    2024年02月15日
    浏览(45)
  • python3 爬虫相关学习8:python 的常见报错内容 汇总收集

    目录 1 低级错误(比如拼写错误等)  1.1 NameError:  1.2 属性错误 AttributeError:  属性拼写错误 2  应用错误(类型应用,属性使用的错误) 2.1 类型错误 TypeError:  如字符串连接错误 2.2  属性应用错误  AttributeError 3 模块相关错误 3.1 找不到对应模块 ModuleNotFoundError: 3.2 相关模

    2024年02月09日
    浏览(46)
  • python3 爬虫相关学习8:python 的常见报错内容汇总(持续收集ing)

    目录 1 低级错误(比如拼写错误等)  1.1 NameError:  1.2 属性错误 AttributeError:  属性拼写错误 2  应用错误(类型应用,属性使用的错误) 2.1 类型错误 TypeError:  如字符串连接错误 2.2  属性应用错误  AttributeError 3 模块相关错误 3.1 找不到对应模块 ModuleNotFoundError: 3.2 相关模

    2024年02月04日
    浏览(43)
  • Python爬虫——requests_get请求

    总结: 参数使用params传递 参数无需重新编码 不需要请求对象定制 请求资源路径中的?可加也可不加

    2024年02月13日
    浏览(47)
  • 【Python爬虫】requests库get和post方法使用

    requests库是一个常用于http请求的模块,性质是和urllib,urllib2是一样的,作用就是向指定目标网站的后台服务器发起请求,并接收服务器返回的响应内容。 1. 安装requests库 使用pip install requests安装 如果再使用pip安装python模块出现timeout超时异常,可使用国内豆瓣源进行安装。

    2024年02月22日
    浏览(43)
  • Python爬虫requests判断请求超时并重新post/get发送请求

    在上面的示例中,send_request_get函数接受一个URL作为参数,并可选地指定最大重试次数和超时时间。函数使用 requests.get 发送GET请求,并设置了超时时间为5秒。如果请求超时,会捕获 requests.exceptions.Timeout 异常,并输出重试信息。如果发生其他异常,会捕获 requests.exceptions.Req

    2024年02月11日
    浏览(58)
  • 【Python爬虫开发基础⑪】requests库概述(GET和POST请求)

    🚀 个人主页 :为梦而生~ 关注我一起学习吧! 💡 专栏 :python网络爬虫从基础到实战 欢迎订阅!后面的内容会越来越有意思~ 💡 往期推荐 : ⭐️前面比较重要的 基础内容 : 【Python爬虫开发基础⑥】计算机网络基础(Web和HTTP) 【Python爬虫开发基础⑦】urllib库的基本使用

    2024年02月12日
    浏览(45)
  • 【爬虫 | Python】解决‘Requests Max Retries Exceeded With Url‘报错的问题

    我们在写爬虫的时候,经常会遇到这样的报错信息: HTTPConnectionPool(host=‘xxx.xxx.com’, port=443): Max retries exceeded with url: /api/v2/oauth (Caused by NewConnectionError(’urllib3.connection.HTTPConnection object at 0x7fac5953ab70: Failed to establish a new connection: [Errno 110] Connection timed out’)) 这里有3个重要的信

    2023年04月12日
    浏览(38)
  • Python学习笔记:Requests库安装、通过url下载文件

    在pipy或者github下载,通常是个zip,解压缩后在路径输入cmd,并运行以下代码  安装完成后,输入python再输入import requests得到可以判断时候完成安装  2.通过url下载文件 使用的是urllib模块

    2024年02月10日
    浏览(49)
  • 爬虫(Requests库get和post应用)

    Requests是Python中用于进行 HTTPS 请求的库。它提供了一种简单直观的API,用于发送 HTTP,HTTPS 请求和处理响应。 参数 url,一般放置需要请求的URL headers,一般用于User-agent(UA)伪装,避免服务器识别出机器请求,headers的获取方法可以为浏览器单击右键选择 检查 ,随后点击 网络

    2024年02月10日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包