现在基于python的爬虫实战项目,网络上的资料还是非常多的,但是本节介绍的爬虫略有不同:同样的是下载某个网页的美女图片,不同的是我们这里利用人工智能筛选出漂亮的。爬虫咱们慢慢说,筛选的原理很简单,参考 python实战小项目,人脸检测,让电脑对你的颜值打分 小节。
什么是网络爬虫?
网络爬虫也叫网络蜘蛛(spider),它的官方定义可以去百科查,这里咱们只通俗的说什么是网络爬虫,可能不准确,但是相对更好理解,还是举例说明。
有时候,你可能从某个网页上看到一段信息,觉得非常符合口味,于是动手把它存下来了。这个读取并且存储数据的过程,和一次网络爬虫爬取是类似的。百度,谷歌等搜索引擎,相信大家都用过,它是怎么实现搜索功能的呢?
其实全靠爬虫。他们的网络爬虫不停的爬取互联网的信息并且把认为有用的存下来,当用户输入关键词搜索时,百度谷歌把关键词和自己的数据库匹配,把最相关的网页展示给用户,这样就完成了一次搜索。
咱们再设想一个场景:有一天,你可能看到某个网站上很多信息都很好,一个一个网页的打开并且存储真是麻烦死了。那么这个时候就可以借助网络爬虫,甚至把整个网站的信息都爬取下来。这也是爬虫的一个用途。
python网络爬虫
经过上面的解释,可以知道,网络爬虫的行为和咱们使用浏览器的行为很像。那么,这里介绍的python网络爬虫其实就是模拟浏览器的。
上图是一组图片,如果咱们想把这些图片都保存下来,一张一张的保存实在太费事了。好像有迅雷可以下载全部链接,但是它会把不该下载的也下载下来,比如红框圈中的那个怪男。
右键,查看网页源代码:
得到很多很多字符,咱们只关心图片链接,打开上图红框圈中的链接,得到图片如下:
显然图片的链接在网页的源代码中,那么怎么写这个python实战项目,网络爬虫呢?
python实战项目
1. 首先获取网页的源代码
实际上就是模拟浏览器请求那个图片网页的网址。不多说,直接看源码,很简单
运行后,会发现刚才咱们在浏览器查看的源代码被打印出来了。
2. python项目实战,提取出图片链接
怎么从一大堆字符里提取出关键的美女图片链接呢?答案是使用正则表达式,关于正则表达式,可以参考:
python基础,什么是正则表达式,正则表达式的使用
使用正则表达式的第一步是找出链接的规律,它在哪些位置出现。这里粗略的试一下:
运行实战项目的 python 网络爬虫脚本,发现我们成功了,得到了一系列的图片地址:
3. python实战项目,下载图片
得到了图片的链接后,咱们怎么把它们存下来呢?答案就是,再模拟浏览器访问一次图片链接,然后把获得的数据写到文件即可。咱们直接上代码:
在执行代码前,先创建一个文件夹 pic 用来存图片,然后执行实战项目python脚本,得到
成功了!
4. python实战项目,筛选图片
可以看到,虽然图片被爬取下来了,但并不是完美的,因为怪男也被下载下来了。怎么筛选呢?实际上,可以参考我们前面的博客:
python实战小项目,人脸检测,让电脑对你的颜值打分
咱们只下载 female(女),颜值大于 55 分的,代码如下:
运行实战项目python脚本,得到结果如下:
可以看出,怪男被剔除了,下载的基本都是颜值较高的美女图片,这样我们就完成了实战项目,python 人工智能爬虫 — 选择性的爬取图片。
用户评论
这类游戏好玩吗?我一直想学Python!
有12位网友表示赞同!
哇,能根据颜值筛选图片真是厉害耶!我要试试啊!
有6位网友表示赞同!
我觉得这游戏听起来很有趣,可以学到编程和人工智能的知识!
有7位网友表示赞同!
这个标题有点意思,不过我觉得做机器人分类美女图片有点奇怪?
有15位网友表示赞同!
Python确实很强大,能做这么酷的东西太棒了!
有13位网友表示赞同!
爬虫下载图片我了解一些,人工智能筛选颜值高估计很难吧?
有20位网友表示赞同!
我更喜欢玩策略类的游戏,但是这个游戏听起来挺新颖的!
有12位网友表示赞同!
能让我学到编程技术的同时还能玩游戏?真是双赢!
有10位网友表示赞同!
这个游戏的难度应该不会太高吧?适合新手入门吗?
有16位网友表示赞同!
爬虫下载图片这种东西,要记得尊重隐私啊!
有14位网友表示赞同!
我觉得这个游戏很有教育意义,可以提高我们的认知能力!
有8位网友表示赞同!
希望这个游戏能做得更加公平公正,不要只关注外貌!
有17位网友表示赞同!
看起来这游戏很烧脑,我要来试试我的人工智能水平!
有5位网友表示赞同!
网上有很多关于Python和人工智能的资源,可以用来学习这个游戏的知识!
有14位网友表示赞同!
这个游戏能让我了解一下爬虫和人工智能的工作原理吗?
有7位网友表示赞同!
我更喜欢玩一些有剧情的游戏,但是这个游戏听起来也挺有趣的!
有10位网友表示赞同!
如果游戏做得比较好玩的话,我还是想来试试的!
有20位网友表示赞同!
这个游戏的目标是什么?是为了学习编程还是为了玩游戏?
有20位网友表示赞同!
我觉得这个游戏的标题有点耸动,实际的内容可能不太一样。
有12位网友表示赞同!