【Python】【进阶篇】十、Python爬虫的Requests库

目录

  • 十、Python爬虫的Requests库
    • 10.1 常用请求方法
      • 10.1.1 requests.get()
      • 10.1.2 requests.post()
    • 10.2 对象属性
    • 10.3 Requests库应用

十、Python爬虫的Requests库

Python 提供了多个用来编写爬虫程序的库,除了前面已经介绍的 urllib 库之外,还有一个很重的 Requests 库。

Requests 是 Python 的第三方库,它的安装非常简便,如下所示:

python -m pip install requests

Requests 库是基于 urllib 开发而来,它使用 Python 语言编写,并且采用了 Apache2 Licensed(一种开源协议)的 HTTP 库。与 urllib 相比,Requests 更加方便、快捷,因此在编写爬虫程序时 Requests 库使用较多。

10.1 常用请求方法

10.1.1 requests.get()

该方法: 用于 GET 请求,表示向网站发起请求,获取页面响应对象。
其语法格式如下:

res = requests.get(url,headers=headers,params,timeout)

参数说明:

  • url : 要抓取的 url 地址。
  • headers : 用于包装请求头信息。
  • params : 请求时携带的查询字符串参数。
  • timeout : 超时时间,超过时间会抛出异常。

示例如下:

import requests

url = 'http://baidu.com'
response = requests.get(url)
print(response)

上面代码的运行结果如下 -

<Response [200]>

获取带查询字符串参数的响应对象,如下所示:

import requests

data = {
    'name': '编程帮',
    'url': "www.biancheng.net"
}
response = requests.get('http://httpbin.org/get', params=data)
# 直接拼接参数也可以
# response = requests.get(http://httpbin.org/get?name=gemey&age=22)
# 调用响应对象text属性,获取文本信息
print(response.text)

上面代码的运行结果如下 -

{
  "args": {
    "name": "\u7f16\u7a0b\u5e2e", 
    "url": "www.biancheng.net"
  }, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.28.2", 
    "X-Amzn-Trace-Id": "Root=1-642d7836-1ca8d68732e0229b7c315fe9"
  }, 
  "origin": "112.32.133.1", 
  "url": "http://httpbin.org/get?name=\u7f16\u7a0b\u5e2e&url=www.biancheng.net"
}

10.1.2 requests.post()

该方法: 用于 POST 请求,先由用户向目标 url 提交数据,然后服务器返回一个 HttpResponse 响应对象。
其语法格式如下:

response=requests.post(url,data={请求体的字典})

参数说明:

  • url : 要抓取的 url 地址。
  • data : 用于包装请求头字典信息。

示例如下:

import requests

# 百度翻译
url = 'https://fanyi.baidu.com'
# post请求体携带的参数,可通过开发者调试工具查看
# 查看步骤:NetWork选项->Headers选项->Form Data
data = {'from': 'zh',
        'to': 'en',
        'query': '编程帮www.python.net你好'
        }
response = requests.post(url, data=data)
print(response)

上面代码的运行结果如下 -

<Response [200]>

10.2 对象属性

使用 Requests 模块向一个 URL 发起请求后会返回一个 HttpResponse 响应对象。

常用属性如下 :

常用属性说明
encoding查看或者指定响应字符编码
status_code返回HTTP响应码
url查看请求的 url 地址
headers查看请求头信息
cookies查看cookies 信息
text以字符串形式输出
content以字节流形式输出,若要保存下载图片需使用该属性。

代码如下 -

import requests

response = requests.get('http://www.baidu.com')
print(response.encoding)
response.encoding = "utf-8"  # 更改为utf-8编码
print(response.status_code)  # 打印状态码
print(response.url)  # 打印请求url
print(response.headers)  # 打印头信息
print(response.cookies)  # 打印cookie信息
print(response.text)  # 以字符串形式打印网页源码
print(response.content)  # 以字节流形式打印

10.3 Requests库应用

实战:使用 Requsets 库下载百度图片
首先打开百度图片,并在输入框搜索 “panda logo”,然后使用 Chrome 开发者工具查看第一张图片的源地址,即 data-imgurl 所对应的 url 地址,如下所示:

https://img2.baidu.com/it/u=1218298422,2801212254&fm=253&fmt=auto&app=138&f=JPEG?w=813&h=500

当我们确定图片地址后,就可以使用 requests 库进行编码了,代码如下:

import requests

url = 'https://img2.baidu.com/it/u=1218298422,2801212254&fm=253&fmt=auto&app=138&f=JPEG?w=813&h=500'
# 简单定义浏览器ua信息
headers = {'User-Agent': 'Mozilla/4.0'}
# 读取图片需要使用content属性
html = requests.get(url=url, headers=headers).content
# 以二进制的方式下载图片
with open('./panda_logo.jpg', 'wb') as f:
    f.write(html)

在当前文件下可查看panda_logo.jpg图片。在这里插入图片描述

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

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

相关文章

vue尚品汇商城项目-day07【44.个人中心二级路由搭建+45.我的订单+46.优化登录跳转+47.独享守卫】

文章目录44.个人中心二级路由搭建45.我的订单46.优化登录跳转47.独享守卫本人其他相关文章链接44.个人中心二级路由搭建 修改代码&#xff1a; 将Center拆分为2个组件MyOrderGroupOrder src/router/routes.js import Center from /pages/Center import GroupOrder from /pages…

QT 常见控件使用

1. QLineEdit 添加控件后&#xff0c;可以编辑控件的名称&#xff0c;然后使用名称获取和设置值 QString qstrValue ui->strName->text(); QMessageBox::information(this, "提示", qstrValue); 2.窗体导航切换 添加新的对话框&#xff0c;然后引入头文件…

游戏安全漏洞一些分享

安全界对漏洞的定义为&#xff1a;在硬件、软件、系统等具体实现或者系统安全策略上存在的缺陷&#xff0c;从而使攻击者能够达到于某种破坏效果。游戏安全漏洞属于常规漏洞的子类&#xff0c;常规漏洞的分类如下图所示&#xff1a; 通过以上的漏洞分类图可知游戏漏洞属于常规…

MATLAB | 如何绘制github同款日历热力图

应粉丝要求&#xff0c;出一个类似于github热图的日历热力图&#xff0c;大概长这样&#xff1a; 依旧工具函数放在文末&#xff0c;如有bug请反馈并去gitee下载更新版。 使用教程 使用方式有以下几种会慢慢讲到&#xff1a; heatmapDT(Year,T,V)heatmapDT(Year,T,V,MonLim)h…

被称为“眼黄金”的叶黄素究竟是什么?叶黄素则能过滤蓝光

人眼视觉依赖于黄斑的中心凹陷。黄斑中含有大量的叶黄素&#xff0c;因此被称为“黄斑”。叶黄素&#xff0c;也被称为“眼黄金”&#xff0c;是人类视网膜中最重要的营养物质。它含有黄斑&#xff08;视觉中心&#xff09;和晶状体&#xff0c;特别是黄斑中含有高浓度的叶黄素…

外部中断实验

基础知识及实验目标 目标&#xff1a;通过中断来实现按键对小灯的控制。 WK_UP 翻转小灯&#xff1b; KEY 1控制 DS1按一次亮&#xff0c;再按一次灭&#xff1b;KEY 0控制DS0&#xff0c;按一次亮&#xff0c;再按一次灭。 触发中断的意思就是&#xff1a;当这个IO口达到触发…

MathType公式使用技巧汇总——Mathtype怎么在word中编辑公式?论文中公式有哪技巧?有哪些注意事项?论文中的公式怎么写?

文章目录1 Mathtype安装2 word 段落间插入公式3 文字间嵌入&#xff08;内联&#xff09;公式4 公式修改5 不要使用键盘上的括号等符号5.1 键盘上符号引发的问题5.2 正确的符号使用方法6 常用设置6. 1公式字体大小设置6.2 公式样式设置7 公式标号设置8 MathType怎么设置下一章公…

ESP-C3入门18. 低功耗蓝牙SPP Server端功能测试

ESP-C3入门18. 低功耗蓝牙SPP Server端功能测试一、功能简介1. GATT2. SPP3. SPP Server和 SPP Client二、 SPP Server开发步骤1. 启动 GATT Server2. SPP 任务初始化3. 注册 SPP应用程序4. UART 初始化5. UART 事件处理程序二、完整程序1. 代码和注释2. 运行方法一、功能简介 …

【SQL 必知必会】- 第八课 使用函数处理数据

目录 函数 函数带来的问题 可移植&#xff08;portable&#xff09; 是否应该使用函数&#xff1f; 使用函数 文本处理函数 SOUNDEX 支持 日期和时间处理函数 数值处理函数 函数 函数带来的问题 与几乎所有DBMS 都等同地支持SQL 语句&#xff08;如SELECT&#xff09;不同&am…

Selenium Web UI 自动化分布式运行:SeleniumGrid

简介&#xff1a;Selenium Grid是selenium的三大组件之一&#xff0c;它允许Selenium-RC针对规模庞大的测试案例集或者需要在不同环境中运行的测试案例集进行扩展。通过将客户端命令发送到远程浏览器的实例, Selenium Grid 允许在远程计算机 (虚拟或真实) 上执行WebDriver脚本.…

2016蓝桥杯C/C++B组

剪邮票 解题思路&#xff1a;做法很多&#xff0c;dx[], dy[]做出来不对&#xff0c;4*4 会出现16个方向重复了&#xff0c;只有四个方向要注意。 然后又看到网上的另一个做法使用全排列&#xff0c;用{1, 1 ,1,1,1 ,0&#xff0c;0&#xff0c;0&#xff0c;0}五个1&#xf…

Web漏洞-RCE代码及命令执行漏洞全解-web漏洞产生的原理及条件-墨者靶场详解

目录 一、导图 二、RCE漏洞简介 三、代码执行漏洞示例 四、命令执行漏洞示例 五、漏洞的产生条件 <网站原码层面> <网站应用层面> 六、漏洞检测 七、黑盒-应用层面-漏洞实例 八、白盒-代码层面-漏洞实例 九、黑盒-RCE公开漏洞-漏洞实例 十、漏洞产生的…

推箱子小游戏

文章目录一、 介绍二、 制作墙壁、地面三、 制作箱子四、 制作终点五、 制作人物移动六、 推箱子关键触发机制七、 终点设置八、 关卡切换设置九、 协程十、 下载一、 介绍 2D推箱子游戏是一种益智类游戏&#xff0c;玩家需要控制角色将箱子推到指定的位置&#xff0c;以完成关…

[Latex]特殊符号和花式字体

特殊符号 正体希腊字母 大写效果小写效果大写效果小写效果异体效果$\Alpha$A\AlphaA$\alpha$α\alphaα$\Beta$B\BetaB$\beta$β\betaβ\Gamma$Γ\GammaΓ$\gamma$γ\gammaγ$Delta$Δ\DeltaΔ$\delta$δ\deltaδ$\Zeta$Z\ZetaZ$\zeta$ζ\zetaζ$Epsilon$E\EpsilonE$\epsilon$…

Qt学习笔记

Qt学习笔记整理&#xff0c;内容主要包含&#xff1a; QT的概述创建QT的项目(hello qt)第一个窗口及窗口属性第一个按钮信号与槽机制带菜单栏的窗口对话框布局常见的控件QT消息机制以及事件绘图与绘图设备 笔记整理时间&#xff1a;2023年3月24日~2023年3月29日 代码仓库&#…

录音文件如何转换成文字文件?

当今社会&#xff0c;录音文件转换成文字文件的需求越来越多&#xff0c;例如会议记录、采访笔录、讲座笔记等。但是&#xff0c;手动逐词逐句转录录音文件费时费力&#xff0c;尤其是文件较大的情况下&#xff0c;会给人带来很大的烦恼。因此&#xff0c;本文将介绍几种常见的…

算法设计-hw2

一、从分治到动态规划 1.1 动态规划的性质 ​ 动态规划具有以下三个明显特性&#xff1a; 无后效性&#xff1a;如果给定某一阶段的状态&#xff0c;则在这一阶段以后过程的发展不受这阶段以前各段状态的影响。如果说的直白一些&#xff0c;就是当我们求出 dpidp_idpi​ 的时…

剑指 Offer 40. 最小的k个数 剑指 Offer 42. 连续子数组的最大和

剑指 Offer 40. 最小的k个数 输入整数数组 arr &#xff0c;找出其中最小的 k 个数。例如&#xff0c;输入4、5、1、6、2、7、3、8这8个数字&#xff0c;则最小的4个数字是1、2、3、4。 示例 1&#xff1a; 输入&#xff…

HTML5 <form> 标签

HTML5 <form> 标签 实例 带有两个输入字段和一个提交按钮的 HTML 表单&#xff1a; <form action"demo_form.php" method"get">First name: <input type"text" name"fname"><br>Last name: <input type&qu…

永久删除文件不得恢复吗 不小心永久删除文件怎么办

一般情况下&#xff0c;我们清理电脑文件时都不是彻底删除文件。这些被删除的文件&#xff0c;基本上都可以通过电脑回收站直接恢复。那么&#xff0c;永久删除文件不得恢复吗&#xff0c;不小心删除永久文件怎么办&#xff1f;今天作者就和大家一起探讨这两个问题。 一、永久…