Python 爬虫进阶篇-4行代码实现爬取指定网站中的全部图片,深入剖析

时间:2022-07-25
本文章向大家介绍Python 爬虫进阶篇-4行代码实现爬取指定网站中的全部图片,深入剖析,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

上一篇:Python 爬虫入门篇-如何获取网页中的图片。我们了解到了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网址。

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

运行后的效果图如下: