python网络爬虫实战教学——requests的使用(1)

在这里插入图片描述

文章目录

  • 专栏导读
  • 1、前言
  • 2、get请求
  • 3、抓取网页
  • 4、抓取二进制数据
  • 5、请求头

专栏导读

✍ 作者简介:i阿极,CSDN 数据分析领域优质创作者,专注于分享python数据分析领域知识。

本文录入于《python网络爬虫实战教学》,本专栏针对大学生、初级数据分析工程师精心打造,对python基础知识点逐一击破,不断学习,提升自我。
订阅后,可以阅读《python网络爬虫实战教学》中全部文章内容,包含python基础语法、数据结构和文件操作,科学计算,实现文件内容操作,实现数据可视化等等。
✍ 其他专栏:《数据分析案例》 ,《机器学习案例》

😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍

1、前言

我们了解了urllib库的基本用法,其中确实有不方便的地方,例如处理网页验证和Cookie时,需要写Opener类和Handler类来处理。另外实现POST、PUT等请求时的写法也不太方便。
为了更加方便地实现这些操作,产生了更为强大的库—requests。有了它,Cookie、登录验证、代理设置等操作都不是事儿。

接下来,让我们领略一下requests库的强大之处吧。

2、get请求

HTTP中最常见的请求之一就是GET请求,首先来详细了解一下利用requests库构建GET请求的方法。
下面构建一个最简单的GET请求,请求的链接为https://www.baidu.com/,该网站会判断客户
端发起的是否为GET请求,如果是,那么它将返回相应的请求信息:

import requests
res = requests.get("https://www.baidu.com/")
print(res.text)

运行结果如下:
在这里插入图片描述

可以发现,我们成功发起了GET请求,返回结果中包含请求头、URL、IP等信息。

3、抓取网页

我们以一个实例页面https://ssrl.scrape.center/作为演示,往里面加入一点提取信息的逻辑,将代码完善成如下的样子:

import requests
import re
r =requests.get('https://ssr1.scrape.center/')
pattern = re.compile(r'<h2.*?>(.*?)</h2>',re.S)  
titles =re.findall(pattern,r.text)
print(titles)

运行结果如下:

['霸王别姬 - Farewell My Concubine', '这个杀手不太冷 - Léon', '肖申克的救赎 - The Shawshank Redemption','泰坦尼克号 - Titanic', '罗马假日 - Roman Holiday', '唐伯虎点秋香 - Flirting Scholar', '乱世佳人 - Gone with the Wind', '喜剧之王 - The King of Comedy','楚门的世界 - The Truman Show', '狮子王 - The Lion King']

这个例子中,我们用最基础的正则表达式来匹配所有的标题内容。关于正则表达式,后面会详细介绍,这里其只作为实例来配合讲解。
我们发现,这里成功提取出了所有电影标题,只需一个最基本的抓取和提取流程就完成了。

4、抓取二进制数据

在上面的例子中,我们抓取的是网站的一个页面,实际上它返回的是一个HTML文档。要是想抓取图片、音频、视频等文件,应该怎么办呢?
图片、音频、视频这些文件本质上都是由二进制码组成的,由于有特定的保存格式和对应的解析方式,我们才可以看到这些形形色色的多媒体。所以,要想抓取它们,就必须拿到它们的二进制数据。

下面以示例网站的站点图标为例来看一下:

import requests
r=requests.get('https://scrape.center/favicon.ico')
print(r.text)
print(r.content)

这里抓取的内容是站点图标,也就是浏览器中每一个标签上显示的小图标

上述实例将会打印Response对象的两个属性,一个是text,另一个是content。
下图分别是r.text和r.content的结果。

在这里插入图片描述

在这里插入图片描述

可以注意到,r.text中出现了乱码,r.content的前面带有一个b,代表这是bytes类型的数据。由于图片是二进制数据,所以前者在打印时会转化为str类型,也就是图片直接转化为字符串,理所当然会出现乱码。

上面的运行结果我们并不能看懂,它实际上是图片的二进制数据。不过没关系,我们将刚才提取到的信息保存下来就好了,代码如下:

import requests
r =requests.get('https://scrape.center/favicon.ico')
with open('favicon.ico','wb')as f:f.write(r.content)

这样,我们就把二进制数据成功保存成了一张图片,这个小图标被我们成功爬取下来了。
在这里插入图片描述

5、请求头

我们知道,在发起HTTP请求的时候,会有一个请求头Request Headers,那么怎么设置这个请求头呢?
很简单,使用headers参数就可以完成了。

在刚才的实例中,实际上是没有设置请求头信息的,这样的话,某些网站会发现这并不是一个由正常浏览器发起的请求,于是可能会返回异常结果,导致网页抓取失败。

要添加请求头信息,例如这里我们想添加一个User-Agent字段,就可以这么写:

import requests
headers ={'User-Agent':'Mozllla/5.0(Nacintosh;Intel Nac OS X 10_11_4)AppleWebKit/537.36(KHTML,like Gecko)Chrome/52.0.2743.116 Safari/537.36'
}
r=requests.get('https://ssr1.scrape.center/',headers=headers)
print(r.text)

当然,可以在这个headers参数中添加任意其他字段信息。

📢文章下方有交流学习区!一起学习进步!💪💪💪
📢首发CSDN博客,创作不易,如果觉得文章不错,可以点赞👍收藏📁评论📒
📢你的支持和鼓励是我创作的动力❗❗❗

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

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

相关文章

部署Prometheus+grafana详解

目录 一、prometheus 介绍 二、prometheus 对比 zabbix 三、prometheus 监控插件 四、部署 1、下载所需的包 2.编辑prometheus的配置文件 3、编辑alertmanager 的配置文件 4、tmpl 模板&#xff08;将此文件创建在/opt/alertmanager/tmpl/&#xff09; 5.启动&#xff0…

探索国内ip切换App:打破网络限制

在国内网络环境中&#xff0c;有时我们会遇到一些限制或者屏蔽&#xff0c;使得我们无法自由访问一些网站或服务。而国内IP切换App的出现&#xff0c;为解决这些问题提供了非常便捷的方式。这些App可以帮助用户切换IP地址&#xff0c;让用户可以轻松地访问被限制或屏蔽的网站&a…

leetcode刷题(javaScript)——BFS广度优先遍历相关场景题总结

广度优先搜索&#xff08;BFS&#xff09;在JavaScript编程中有许多实际应用场景&#xff0c;特别是在解决图、树等数据结构相关问题时非常常见。在JavaScript中&#xff0c;可以使用队列来实现广度优先搜索算法。通过将起始节点加入队列&#xff0c;然后迭代地将节点的邻居节点…

css background-color属性无效

因为工作需要&#xff0c;最近在帮H5同事开发几个页面&#xff0c;在使用H5进行如下布局的时候&#xff0c;发现设置 background-color为白色无效。 代码如下&#xff1a; <div class "bottomBar"><div style"position: fixed; left: 20px;">…

同步服务器操作系统公网仓库到本地02--搭建http内网仓库源 _ 麒麟KOS _ 统信UOS _ 中科方德 NFSCNS

原文链接&#xff1a;同步服务器操作系统公网仓库到本地02 —搭建http内网仓库源| 麒麟KOS | 统信UOS | 中科方德 NFSCNS Hello&#xff0c;大家好啊&#xff01;继之前我们讨论了如何同步服务器公网仓库到本地服务器之后&#xff0c;今天我们将进入这个系列的第二篇文章——通…

美容美发行业在线下单小程序源码系统 一键在线预约 带完整的安装代码包以及安装部署教程

近年来&#xff0c;美容美发市场竞争日益激烈&#xff0c;传统的经营模式已难以满足消费者的多样化需求。为了适应市场变化&#xff0c;提升服务质量&#xff0c;许多商家开始寻求数字化转型。然而&#xff0c;由于技术门槛较高&#xff0c;很多商家在开发在线预约系统时遇到了…

中兴通讯服务器荣获滴滴“最佳需求响应「和衷共济」奖”

在数字经济加速发展的背景下&#xff0c;算力成为数字产业的核心支撑力量&#xff0c;而服务器和存储产品更是为互联网创新体验提供了底层基础设施保障。在此背景下&#xff0c;中兴通讯服务器产品有效支撑滴滴出行智慧交通解决方案&#xff0c;凭借卓越表现&#xff0c;获得滴…

StarRocks-2.5.13部署安装

1、安装jdk11 tar xf jdk-11.0.16.1_linux-x64_bin.tar.gz mv jdk-11.0.16.1 /data/soft/jdk-11 # 配置在/etc/profile中 export JAVA_HOME/data/soft/jdk-11 export CLASSPATH.:/data/soft/jdk-11/lib export PATH/data/soft/jdk-11/bin:$PATH # 验证jdk [rootdb-public-03 s…

大广赛获奖作品一览

大广赛指全国大学生广告艺术大赛&#xff0c;这是一项由中国教育部高等教育司指导、中国高等教育学会广告教育专业委员会主办的全国性高校文科大赛&#xff0c;也是迄今为止全国规模大、覆盖高等院校广、参与师生人数多、作品水准高的国家级大学生赛事。 大广赛的竞赛形式主要…

vue 隐藏导航栏和菜单栏

初始效果&#xff1a; 效果&#xff1a;

梦百合发布“正确睡眠观”,再次呼吁“别睡硬床”

3月21日“世界睡眠日”当天,MLILY梦百合召开了主题为“别睡硬床”的品牌发布会,梦百合家居董事长倪张根发布了一场线上主题演讲,普及睡硬床可能带来的危害,呼吁国人“别睡硬床!”,并发布“100万张硬床垫改造计划”,期望消费者通过从体验一张薄垫开始,从而逐步认识到睡硬床的危害…

Go——map

一.map介绍和使用 map是一种无序的基于key-value的数据结构&#xff0c;Go语言的map是引用类型&#xff0c;必须初始化才可以使用。 1. 定义 Go语言中&#xff0c;map类型语法如下&#xff1a; map[KeyType]ValueType KeyType表示键类型ValueType表示值类型 map类型的变量默认…

网络原理(4)——TCP协议的特性

目录 一、滑动窗口 1、ack丢了 2、数据丢了 二、流量控制&#xff08;流控&#xff09; 三、拥塞控制 拥塞窗口动态变化的规则 四、延时应答 五、捎带应答 六、面向字节流 七、异常情况 &#xff08;1&#xff09;进程崩溃了 &#xff08;2&#xff09;其中一方关机…

@arco.design radioGroup 组件手写 beforeChange 方法

官方是没有提供 beforeChange 事件的&#xff0c;只能自己写一个 子组件&#xff08;CustomRadioGroup&#xff09; <template><a-radio-group :model-value"modelValue" change"onRadioChange"><a-radio v-for"item in list" …

蓝桥杯-模拟-旋转图片

题目 思路 Python中range() 函数的使用介绍_python指定范围内的整数-CSDN博客 range(start, stop, step)&#xff1a;生成一个序列包含start到stop-1的整数&#xff0c;其中步长为step 代码 n, m map(int, input().split()) a [list(map(int, input().split())) for _ in…

借教室与差分

原题 题目描述 在大学期间&#xff0c;经常需要租借教室。 大到院系举办活动&#xff0c;小到学习小组自习讨论&#xff0c;都需要向学校申请借教室。 教室的大小功能不同&#xff0c;借教室人的身份不同&#xff0c;借教室的手续也不一样。  面对海量租借教室的信息&…

MySQL 锁机制

优质博文&#xff1a;IT-BLOG-CN 定义&#xff1a;锁是计算机协调多个进程或线程并发访问某一资源的机制。 一、表锁&#xff08;偏读&#xff09; MyISAM 引擎&#xff0c;开销小&#xff0c;加锁快&#xff0c;无死锁、锁定粒度大、发生锁冲突的粒度最高&#xff0c;并发度…

【MySQL】对表的相关操作(DDL)

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习计网、mysql和算法 ✈️专栏&#xff1a;MySQL学习 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac…

GPT-5可能会在今年夏天作为对ChatGPT的“实质性改进”而到来

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

MQ组件之RabbitMQ学习

MQ组件之RabbitMQ入门 同步调用和异步调用 在微服务架构中&#xff0c;服务之间的调用有同步调用和异步调用两种方式。 我们使用OpenFeign去调用是同步调用&#xff0c;同步调用的缺点很明显&#xff0c;在下图的场景中&#xff0c;支付完成后需要调用订单服务、仓库服务、短…