python爬取网络图片_python学习之路(七):牛刀小试,爬取网络图片下载到电脑...

本文主要是介绍python爬取网络图片_python学习之路(七):牛刀小试,爬取网络图片下载到电脑...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

自学python今天刚好一星期,今天准备来写第一个正式的脚本代码,以前知道python,是从网络爬虫才开始知道python的。最开始对python的印象就是网络爬虫,所以今天的第一个python就写一个简单的爬虫脚本。

在网上找了一个壁纸网页(http://www.win4000.com/zt/fengjing_1.html),想把里面的壁纸下载保存到电脑,但是一张一张的下载太费力气了,所以就写一个python爬取里面的图片地址,然后保存在电脑上。

59350001fecdbebe8c54

写这个脚本用到前面几篇文章里讲到的一些知识点有:

1、 函数的创建与调用

2、 内置模块的导入

3、 For循环

4、 字符串编码(这个前面几篇里没讲过)

思路:

在这个脚本中用到python内置的模块有urllib模块,和re模块。Urllib模块是python内置的一个HTTP请求模块。Re模块是python内置的一个正则表达式模块。我们用urllib请求到网页的源代码,然后用正则表达式匹配出图片的下载地址。然后用for循环一张一张的把图片下载到电脑。

实现:

1、新建一个py文件,导入urllib和re模块。

593300041cb439777cc7

Urllib里面包括很多子模块。包括以下模块

urllib.request 请求模块

urllib.error 异常处理模块

urllib.parse url解析模块

urllib.robotparser robots.txt解析模块

在这个脚本中只用到请求模块,所以就只导入urllib.request就好了。

2、写一个名为getHtml的函数,然后用urllib.request请求到网页源代码

59350001ffda079baf92

给这个函数一个URL参数,然后用urllib.request请求到网页源代码,上面的变量html就是网页的源代码。

Html.decode(‘utf-8’)是网页的编码,如果编码不对,请求到的网页源码很可能是乱码的。我们可以在网页中用鼠标右键,然后查看网页源代码。

5930000494a762368bf2

在源代码的头部会有这个网页的编码,我门根据这个编码写到代码里。

593100046609c72c1b26

3、写一个名为getImg的函数,然后用re模块从上面一步中得到的网页源代码筛选出图片的url

5931000466352f4c0b8f

在网页中鼠标右键查看源代码,可以看到这个网页的图片真实地址是放在img标签的data-original属性里面。

593000049554d8d9b157

所以我们的正则表达式就写成这样

reg = r'data-original = "(.+?\.jpg)"'

注意data-original后面的等于号两边都有空格,所以在正则表达式里也要打空格。

函数返回的imglist就是图片的url列表。

正则表达式也不是三言两语能说清的,想了解的可以阅读百度百科正则表达式:

https://baike.baidu.com/item/正则表达式/1700215

百度百科里面有很详细的介绍。

5、写一个名为downImg的函数

59340002640992b607ea

用for循环把上一步得到的imglist循环下载到电脑。调用urllib模块中的urllib.request.urlretrieve函数,把图片保存在电脑里。我这里是保存在D盘的images目录下

6、 调用前面的写3个函数。

首先调用getHtml传入网页连接,得到源代码html

5934000264a47476c254

然后调用getImg传入源代码,得到图片列表imglist

最后调用downImg传入图片列表开始下载

完整代码如下:

59300004970e5761c328

运行结果:

5935000202ad7d166534

电脑存D盘的images目录:

59330004206e43396d60

再加个循环,我们可以把前几页所有的图片都下载下来。把网页翻到第二页。查看第二页的连接。

可以发现一个规律,网站地址的.thml前面就是下划线+页数。可以根据这个规律来下载指定页数内的所有图片。只需在调用上面的三个函数的时候,加个循环拼接网页的地址,循环调用即可。

5930000497e5db27c3cd

给downImg函数加个页数pageNum的参数。然后保存图片命名以页数开头命名。加个页数开头以防止后面一页把前面一页下载的图片给覆盖了。

运行代码后,前五页145张图片都已经下载到电脑里了。

5935000203b1ce02291a

当然上面爬取数据的方式是最简单的,数据量多的话效率不是很理想,现在有很多优秀的第三方模块都可以代替内置的模块,有时间的话我找一个好用的第三方爬虫模块来说一下。

这篇关于python爬取网络图片_python学习之路(七):牛刀小试,爬取网络图片下载到电脑...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/418706

相关文章

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Python如何去除图片干扰代码示例

《Python如何去除图片干扰代码示例》图片降噪是一个广泛应用于图像处理的技术,可以提高图像质量和相关应用的效果,:本文主要介绍Python如何去除图片干扰的相关资料,文中通过代码介绍的非常详细,... 目录一、噪声去除1. 高斯噪声(像素值正态分布扰动)2. 椒盐噪声(随机黑白像素点)3. 复杂噪声(如伪

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

基于Linux的ffmpeg python的关键帧抽取

《基于Linux的ffmpegpython的关键帧抽取》本文主要介绍了基于Linux的ffmpegpython的关键帧抽取,实现以按帧或时间间隔抽取关键帧,文中通过示例代码介绍的非常详细,对大家的学... 目录1.FFmpeg的环境配置1) 创建一个虚拟环境envjavascript2) ffmpeg-py

python使用库爬取m3u8文件的示例

《python使用库爬取m3u8文件的示例》本文主要介绍了python使用库爬取m3u8文件的示例,可以使用requests、m3u8、ffmpeg等库,实现获取、解析、下载视频片段并合并等步骤,具有... 目录一、准备工作二、获取m3u8文件内容三、解析m3u8文件四、下载视频片段五、合并视频片段六、错误

Python中提取文件名扩展名的多种方法实现

《Python中提取文件名扩展名的多种方法实现》在Python编程中,经常会遇到需要从文件名中提取扩展名的场景,Python提供了多种方法来实现这一功能,不同方法适用于不同的场景和需求,包括os.pa... 目录技术背景实现步骤方法一:使用os.path.splitext方法二:使用pathlib模块方法三

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

qt5cored.dll报错怎么解决? 电脑qt5cored.dll文件丢失修复技巧

《qt5cored.dll报错怎么解决?电脑qt5cored.dll文件丢失修复技巧》在进行软件安装或运行程序时,有时会遇到由于找不到qt5core.dll,无法继续执行代码,这个问题可能是由于该文... 遇到qt5cored.dll文件错误时,可能会导致基于 Qt 开发的应用程序无法正常运行或启动。这种错