活用Python之网络爬虫图片抓取

举报
开发者学堂小助 发表于 2020/12/29 15:09:26 2020/12/29
【摘要】 以网络爬虫图片抓取为例,带你体验Python在人工智能领域中的应用

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

 

什么是网络爬虫

 

爬虫1.png

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

 

网络爬虫如何工作

爬虫2.png

网络爬虫工作流程

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

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

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

      第三步,保存数据。手工的方式是使用浏览器将图片下载保存在个人电脑中,而爬虫程序保存数据的方式多种多样,可以简单保存为TXT文本或JSON文本,也可以保存到数据库,如MySQLMongoDB等,还可保存至远程服务器,如借助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 运行在浏览器上,由浏览器来解析。它的网页结构如下:

爬虫3.png

HTML网页结构

爬虫4.png

HTML标签

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

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

 

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

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

爬虫5.png

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

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

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

爬虫6.png

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

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

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

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

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

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

【版权声明】本文为华为云社区用户翻译文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容, 举报邮箱:cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200