缺照片不,去百度图片上爬一些

做机器学习的数据集其实是一个关键,只有具备充足的可靠数据集算是做到了成功的第一步。所以去哪里找数据集呢?答案就在网上,比如你想做一个猫的图像识别程序,先去网上下载一堆猫的照片就是一个很不错的办法。今天就给大家介绍一个Python爬虫程序,可以从百度图片上面根据关键词爬取一些照片。

基本原理

我们按照人工在百度照片上面搜索图片和下载图片的步骤来给大家简单介绍一下Python爬虫是如何做到相关功能的。

第一步当然是进入"百度图片"的网站,然后在搜索界面输入你想要的关键词。

对于代码,我们可以通过request.get(url)来实现,其中url就是百度图片关键词搜索界面。

注:url是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

进入搜索页面后,我们可以看到一堆猫的照片,但是想要从网上下载还得需要找到照片的原网址。这时候我们需要右键查看网页原代码,最终发现关键字objURL对应的就是图片的真实地址。

比如这里我们复制其中一个网址,直接打开后就会看到:

没错,既然知道了图片的位置,我们只需要把这些网址都找到即可。这里使用的是Python正则表达式re.findall来实现抓取网址。

注:正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

最后一步就是分别利用网址保存下载图片了。总体而言这个流程非常简单。

程序运行

代码上面我们直接利用如下链接:

https://github.com/nnngu/BaiduImageDownload

下载好了之后,就可以运行。根据程序提醒,先输入搜索关键词,比如这里我们选择猫。

程序运行过程:

最终我们下载好了59张猫的图片:

我们拿前十二张张结果和网页搜索结果做对比:

发现结果是一样的,也就是说代码完成了猫图片的下载。

大家可以依葫芦画瓢,去用代码下载自己想要的图片吧。

讨论

我们会发现,这个代码也会发生一些小失误,比如猫的第五十二张图片显示不出来:

还有下载下来的图片的数量是有限。

另外,百度图片本身的图片来源也有一些瑕疵,比如我们会发现关于猫的图片竟然有这个:

嗯,有点意思。

下一步的目标:

  • 改进代码,可以下载更多的图片。
  • 尝试去谷歌爬虫,对比和百度的效果......
  • 用爬虫结果直接完成一个图像识别程序。

原文发布于微信公众号 - 浊酒清味(gh_39aead19f756)

原文发表时间:2019-08-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券