0
点赞
收藏
分享

微信扫一扫

Python 爬虫进阶篇-4行代码实现爬取指定网站中的全部图片实例演示及原理剖析


我们了解到了 ​urllib​ 获取图片的原理,​​urllib.request.urlretrieve()​​ 就是用来获取图片的。

这一篇,我们用正则表达式匹配出指定网站的所有图片,然后都下载下来。

re 库就是我们用来做正则表达式的库,​​re.findall(a, html)​​ 可以把 ​html​ 中所有符合 ​a​ 正则表达式的链接全都匹配出来。

我们来看看 ​a:​'img src="(http.*?)"'​​,一般 ​html​ 中的图片就是 ​img​ 标签,加上 ​src​ 网址,光匹配 ​img​ 标签的话,可能是空的哦。

​http.*​​ 就是匹配所有网址了,​"."​ 代表任意字符,​"*"​ 代表前一个字符可以是任意数量了,​​.*​​ 就表示 ​http​ 开头的所有网址了,​​.*?​​ 加个 ​?​ 就限制满足条件的只匹配一次,没有 ​?​ 就是匹配任意次,​​.*​​ 习惯性称之为贪婪匹配!

import urllib.request
import re

url="http://ohhappyday.com/" # 我们要爬取图片的地址

page = urllib.request.urlopen(url) # 第一行 打开网址
html = page.read().decode("utf-8") # 第二行 获取html源码

imglist = re.findall('img src="(http.*?)"',html) # 第三行 在html中匹配出符合条件的字符串

x=0
for imgurl in imglist: # 遍历图片地址列表
urllib.request.urlretrieve(imgurl,'pic%s.jpg' %x) # 第四行 获取图片并保存
x=x+1

​:可以分别用 ​print​ 打印出 ​page、html、imglist、imgurl​,这样可以让你更清楚每一步在做什么,产生了什么。

​​​​:如果网站地址中包含中文会报错,这个会在后期讲解中做处理。

​​​​:如果某些网站没有效果可能是做了反爬虫处理,或者它展示图片的原理不是常规的 ​img​ 加 ​src​ 网址。

如下是我们要实战的网站:

Python 爬虫进阶篇-4行代码实现爬取指定网站中的全部图片实例演示及原理剖析_python爬取网站所有图片

运行后的效果图如下:

Python 爬虫进阶篇-4行代码实现爬取指定网站中的全部图片实例演示及原理剖析_python爬取网站所有图片_02

喜欢的点个赞❤吧!



举报

相关推荐

0 条评论