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网址。
如下是我们要实战的网站:
运行后的效果图如下:
- dom4j 使用总结
- 快速对表的某字段赋递增的数值
- SQL SERVER修改函数名引起的问题
- SQL Server安全(1/11):SQL Server安全概述
- SQL Server安全(2/11):身份验证(Authentication)
- SQL Server安全(3/11):主体和安全对象(Principals and Securables)
- 在SQL Server里如何进行页级别的恢复
- 你可能不知道的字符比较中的“秘密”
- c++实现简单计算器
- re模块(正则表达式)
- Python学习——collections系列
- 为stackGan一个工程创建一个虚拟环境,python 2.7 tensorflow0.12-tensorflow 1.01
- linux 普通操作,查看资源使用情况
- Python 函数使用记录,join函数和os.path.join用法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法