前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python爬虫入门:批量爬取网上图片的两种简单实现方式——基于urllib与requests

Python爬虫入门:批量爬取网上图片的两种简单实现方式——基于urllib与requests

作者头像
一石匠人
发布2018-09-12 09:54:44
3K0
发布2018-09-12 09:54:44
举报
文章被收录于专栏:儿童编程儿童编程

Python到底多强大,绝对超乎菜鸟们(当然也包括我了)的想象。近期我接触到了爬虫,被小小地震撼一下。总体的感觉就两个词——“强大”和“有趣”。今天就跟大家分享一下两个简易的爬虫案例,大牛们请飞过哈。

先来科普一下啊“爬虫技术”吧。网络爬虫(又被称为网页蜘蛛,网络机器人,网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。

它的名字虽然很多,但是过程很明确,就两个部分:一是从网页源代码中爬取有用信息;二是对这些信息进行处理(如分析、下载等)。

下面用两种方法制作批量爬取网络图片的方法。

第一种方法:基于urllib实现

要点如下:

1.url_request = request.Request(url)

2.url_response = request.urlopen(url) 或者 url_response = request.urlopen(url_request)

3.data=url_response .read().decode('utf-8')

4.jpglist=re.findall(正则表达式,data)

5.request.urlretrieve(jpgUrl,'%s.jpg' %n)   #下载,第一个参数网址,第二参数名称

第一个案例,我们爬取了猫扑上的一个网页上的图片,案例代码如下。

基于urllib案例完整代码

需要说明的是代码request.urlretrieve(each,'pic2\\%s.jpg'  %n)中“pic2\\”代表下载的图片放置在提前建好的文件夹pic2里。运行代码结束之后IDLE和最后结果如下图所示。

代码运行界面1

案例1结果

第二种实现方法:基于requests实现

要点如下:

1.data=requests.get(url).text

2.jpglist=re.findall(正则表达式,data,re.S)

3.pic=requests.get(pic_url,timeout=10)

4. fp=open(pic_name,'wb')

    fp.write(pic.content)

    fp.close()

在这个案例中我们爬取了一个壁纸网站的网页,预测应该图片质量比较高吧。完整代码如下:

基于requests案例代码

我们来看一下运行代码的结果,如下图所示。真心不错,我们获得了42张壁纸,而且是在短短几秒钟内完成的,很厉害的感觉有木有。

代码运行界面2

案例二结果

改进一下

下面我们进行一个改进,输入关键词直接自动下载相关图片(创意参考了https://www.jianshu.com/p/19c846daccb3)。

需要说明一下原理。这个针对百度图片搜索功能完成的,因为我们发现关键词就在搜索结果页的网址中。我们只需要把网址中的关键词换掉,就是针对新的关键词的结果页网址。

完整代码如下:

改进后代码

这里我输入了“北京”,如下图。结果针对让人振奋,自动下载了59张关于北京的图片,有没有很爽的感觉。

代码运行界面3

案例三结果

参考学习网址:

1.https://blog.csdn.net/appleyk/article/details/78070098

2.https://blog.csdn.net/csdn2497242041/article/details/77170746

3.https://www.cnblogs.com/SneakyCrab/p/5905804.html

4.https://www.jianshu.com/p/19c846daccb3

5.https://www.jianshu.com/p/74b94eadae15

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.07.31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一种方法:基于urllib实现
  • 第二种实现方法:基于requests实现
  • 改进一下
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档