华为云计算 云知识 活用Python之网络爬虫图片抓取
活用Python之网络爬虫图片抓取

说起Python,想必大家一定不陌生,作为时下大热的计算机程序设计语言,大大小小网站的广告栏、甚至是朋友圈,都充斥着Python学习的广告,简直掀起了一场全民学Python的热潮。不过,Python热门自然是有原因的,它免费、 开源 ,可跨平台运行、不区分操作系统,语法简洁清晰、易上手,语法表达优美易读,支持模块和包,有极为丰富、功能强大的库,因此被广泛应用于人工智能、科学计算、图形技术、动画、游戏等行业。我们今天要学习的网络爬虫图片抓取,就是它在人工智能领域中的应用。

什么是网络爬虫

什么是网络爬虫

互联网上的海量数据信息是存放在各类web站点上的,web站点之间通过网络互联,形成了一张巨大的网。如果我们把这张互联网比作蜘蛛网,那么一只蜘蛛沿着蜘蛛网爬取节点上的猎物,就相当于爬虫程序沿着网络连接在web站点上抓取数据。因此,网络爬虫可以定义为一种从互联网上抓取数据信息的 自动化 程序。它的工作方式则是:web站点上各种网页,即url页面,组成了互联网;爬虫程序与互联网通信并获取数据,然后把抓取到的数据存储起来。

网络爬虫如何工作

网络爬虫工作流程

网络爬虫工作流程

从web站点获取资源分为三个步骤,即 “获取网页”、“提取信息”和“保存数据”。下面我们就以“获取一张华为手机图片”为例,来详细讲解这三个流程。

第一步,获取网页。我们在手工操作时需要打开浏览器输入华为的网址,或者搜索“华为手机”关键字,才可以定位到目的网页。爬虫在获取网页时是通过构造一个请求并发送给服务器,然后由服务器给出响应,爬虫接收的响应是一个网页源代码,手工方式是通过浏览器解析出来的,所以爬虫程序还需要将源代码解析出来。

第二步,提取信息。手工的方式是通过肉眼的识别和人脑的分析,定位到目的图片的位置,而爬虫程序是根据网页的规则,使用正则表达式将解析数据结构中的Body部分,并获取目的图片。

第三步,保存数据。手工的方式是使用浏览器将图片下载保存在个人电脑中,而爬虫程序保存数据的方式多种多样,可以简单保存为TXT文本或JSON文本,也可以保存到 数据库 ,如MySQL和MongoDB等,还可保存至远程服务器,如借助SFTP进行操作,甚至可以将图片视频保存在文件系统或者 对象存储 中。

综上所述,爬虫就是代替我们来完成这份爬取工作的自动化程序,它可以在抓取过程中进行各种异常处理、错误重试操作,确保爬取持续高效地运行。

网络爬虫能做什么

网络爬虫的应用场景可根据用途分为四类:搜索引擎,信息收集,数据分析,图片抓取。

搜索引擎:如Google和百度,这类爬虫会爬取整个互联网的特定信息,并且分类、排序,然后用户可以使用关键字进行结果的搜索;

信息收集:如新闻资讯聚合,这类爬虫会根据关键字搜索相关联的新闻信息,聚合呈现给用户;

数据分析:如商品价格比较和股票量化交易系统,爬虫可以针对相同的商品从多个电商平台上获取价格信息,综合分析价格对比和价格趋势,为商品购买提供价格决策;

图片抓取:抓取特定类型或者特定主题的图片,可以用来个人收藏,也可用于AI图像分析的图片资源库。我们今天要学习的,正是这一类。

Python网络爬虫技术原理及基础

网络爬虫技术的原理涉及三部分:Python编程基础、HTML网页基础、HTTP原理以及Requests库,首先,我们既然要使用Python编写爬虫,自然要掌握Python的基础编程知识;其次,我们的爬虫是从互联网的网页上抓取信息,所以要对目的网页有一定的了解,即HTML网页基础;最后,爬虫程序要处理和web站点进行的请求与响应,所以还要了解HTTP的通信原理以及Python中用来处理HTTP请求和响应的Requests库。

Python语言是一种面向对象的解释型计算机程序设计语言,具有面向对象和解释性语言两个重要特征。

面向对象是相对于面向过程而言的。比如C语言、Shell语言就是面向过程的,面向过程是一件事“该怎么做”,编程的时候把解决问题的步骤分析出来,然后用函数把这些步骤实现;面向对象是一种以“对象”为中心的编程思想,把要解决的问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个对象在整个解决问题的步骤中的属性和行为,面向对象是一件事“该让谁来做”,这个“谁”就是对象,他要怎么做是他自己的事,反正最后一群对象合力能把事做好就行了。至于解释型语言,我们在编程时使用的是高级语言,计算机不能直接理解高级语言,只能理解和运行机器语言,所以必须要把高级语言翻译成机器语言,计算机才能运行高级语言所编写的程序。解释型语言的优点是可跨平台运行,缺点则是运行时需要源代码,知识产权保护性差,运行效率低。

至于Python的数据类型、变量、文件、语句、函数等知识,囿于篇幅,不再赘述,感兴趣的小伙伴可以去课程中学习。

HTML (Hypertext Markup Language)是一种用于创建网页的超文本标记语言,可以构建web 站点,HTML 运行在浏览器上,由浏览器来解析。它的网页结构如下:

网络爬虫解析网页结构

HTML网页结构

网络爬虫解析HTML标签

HTML标签

HTML 标签 (HTML tag)由尖括号包围,通常是成对出现的,比如 <header> 和 </header>,<body>和</body>,在我们抓取图片的爬虫程序中,就需要获得img标签后面的图片url链接来下载图片。

我们在编写爬虫时构建HTTP的请求并处理HTTP的响应,如果从零开始,效率非常低,所以就需要用到Python中的Request库。Requests是一种常用的http请求库,可以方便地发送http请求并处理响应结果,极大地提高了效率。

如何在华为云上搭建python网络爬虫

Python网络爬虫既可以在本地运行,也可以在云端运行。相对于本地运行方案,华为云上运行爬虫具有更多优势:

华为云上运行爬虫的优势

华为云网络爬虫解决方案的优势

本地可以通过chrome浏览器对我们要爬取的网站进行分析洞察,并基于此编写Python爬虫代码,但是本地还需要搭建Python 集成开发环境

华为云上运行爬虫程序可将爬取到的数据分为两类,图片存储到OBS对象存储,文本存储到RDS数据库中。

华为云网络爬虫解决方案架构

华为云网络爬虫解决方案架构

说了这么多,大家对于实验原理应该都比较了解了,至于实验流程呢,简单总结为三个步骤:

第一步是洞察目标网页并且完成Python网络爬虫的编写;

第二步是ECS运行Python爬虫并用RDS存储文本数据;

第三步是使用OBS存储抓取的图片。

看到这里,你一定会吐槽“这说得也太笼统了吧”。既然这么好奇,不如来 沙箱实验室 亲自体验一下咯,毕竟实验的乐趣不是文字能够描述出来的嘛~对于想要全面掌握Python网络爬虫图片抓取技能的小伙伴,建议系统地学习课程,并通过实验和考试检验自己的掌握情况。什么?你还不知道在哪里学习?当然是在华为云学院啦,找到《使用Python爬虫抓取图片》这门微认证就对了!

上一篇:SemVer文档手册学习与基本介绍 下一篇:华为云推出场景化解决方案帮助制造企业加速数字化转型

无服务器图片生成缩略图

无服务器图片生成缩略图