Python3.x爬虫下载网页图片的实例讲解


Posted in Python onMay 22, 2018

一、选取网址进行爬虫

本次我们选取pixabay图片网站

url=https://pixabay.com/

Python3.x爬虫下载网页图片的实例讲解

Python3.x爬虫下载网页图片的实例讲解

二、选择图片右键选择查看元素来寻找图片链接的规则

Python3.x爬虫下载网页图片的实例讲解

Python3.x爬虫下载网页图片的实例讲解

通过查看多个图片路径我们发现取src路径都含有 https://cdn.pixabay.com/photo/ 公共部分且图片格式都为.jpg 因此正则表达式为

re.compile(r'^https://cdn.pixabay.com/photo/.*?jpg$')

通过以上的分析我们可以开始写程序了

#-*- coding:utf-8 -*-
import re
import requests
import os
from bs4 import BeautifulSoup

url = 'https://pixabay.com/'
html = requests.get(url).text #获取网页内容
print(html)
# 这里由于有些图片可能存在网址打不开的情况,加个5秒超时控制。
#data-objurl="http://pic38.nipic.com/20140218/17995031_091821599000_2.jpg"获取这种类型链接
soup = BeautifulSoup(html,'html.parser',from_encoding='utf-8')
#^abc.*?qwe$
pic_url = soup.find_all('img',src=re.compile(r'^https://cdn.pixabay.com/photo/.*?jpg$'))
#pic_url = pic_node.get_text()
#pic_url = re.findall('"https://cdn.pixabay.com/photo/""(.*?)",',html,re.S)
print(pic_url)
i = 0
#判断image文件夹是否存在,不存在则创建
if not os.path.exists('image'):
 os.makedirs('image')
for url in pic_url:
 img = url['src']
 try:
 pic = requests.get(img,timeout=5) #超时异常判断 5秒超时
 except requests.exceptions.ConnectionError:
 print('当前图片无法下载')
 continue
 file_name = "image/"+str(i)+".jpg" #拼接图片名
 print(file_name)
 #将图片存入本地
 fp = open(file_name,'wb')
 fp.write(pic.content) #写入图片
 fp.close()
 i+=1

代码是不是很简单呢 如果你想修改地址 取爬取别的网站 请注意分析下载图片路径的共性 并设计合理的正则表达式,否则是无法获取到图片路径的

执行过程截图:

Python3.x爬虫下载网页图片的实例讲解

以上这篇Python3.x爬虫下载网页图片的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用rabbitmq实现网络爬虫示例
Feb 20 Python
python海龟绘图实例教程
Jul 24 Python
python实现计算资源图标crc值的方法
Oct 05 Python
python绘图方法实例入门
May 19 Python
Python中Collections模块的Counter容器类使用教程
May 31 Python
python实现傅里叶级数展开的实现
Jul 21 Python
不管你的Python报什么错,用这个模块就能正常运行
Sep 14 Python
wxpython绘制音频效果
Nov 18 Python
如何使用python代码操作git代码
Feb 29 Python
Python进程的通信Queue、Pipe实例分析
Mar 30 Python
Django实现whoosh搜索引擎使用jieba分词
Apr 08 Python
详解Go语言运用广度优先搜索走迷宫
Jun 23 Python
python3使用smtplib实现发送邮件功能
May 22 #Python
python抓取网站的图片并下载到本地的方法
May 22 #Python
Python3实现的字典、列表和json对象互转功能示例
May 22 #Python
python3.5 email实现发送邮件功能
May 22 #Python
python模块smtplib实现纯文本邮件发送功能
May 22 #Python
python邮件发送smtplib使用详解
Jun 16 #Python
Python3多线程操作简单示例
May 22 #Python
You might like
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
PHP时间函数使用详解
2019/03/21 PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
2020/07/19 PHP
Auntion-TableSort国人写的一个javascript表格排序的东西
2007/11/12 Javascript
精心挑选的15个jQuery下拉菜单制作教程
2012/06/15 Javascript
中文字符串截取的js函数代码
2013/04/17 Javascript
浅析JQuery获取和设置Select选项的常用方法总结
2013/07/04 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
javascript弹出拖动窗口
2015/08/11 Javascript
js canvas仿支付宝芝麻信用分仪表盘
2016/11/16 Javascript
Bootstrap 3 进度条的实现
2017/02/22 Javascript
JS+html5制作简单音乐播放器
2020/09/13 Javascript
详解用vue.js和laravel实现微信授权登陆
2017/06/23 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
在vue中使用inheritAttrs实现组件的扩展性介绍
2020/12/07 Vue.js
element el-table表格的二次封装实现(附表格高度自适应)
2021/01/19 Javascript
[01:19:34]2014 DOTA2国际邀请赛中国区预选赛 New Element VS Dream time
2014/05/22 DOTA
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
Python实现发送QQ邮件的封装
2017/07/14 Python
python出现"IndentationError: unexpected indent"错误解决办法
2017/10/15 Python
Python判断两个list是否是父子集关系的实例
2018/05/04 Python
对python 多线程中的守护线程与join的用法详解
2019/02/18 Python
基于Django统计博客文章阅读量
2019/10/29 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
2020/01/08 Python
Python爬取365好书中小说代码实例
2020/02/28 Python
解决Python中报错TypeError: must be str, not bytes问题
2020/04/07 Python
基于Python中random.sample()的替代方案
2020/05/23 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
2020/06/12 Python
Python可以用来做什么
2020/11/23 Python
仓库管理制度
2014/01/21 职场文书
公司司机岗位职责
2014/02/07 职场文书
客服专员岗位职责范本
2015/04/07 职场文书
地道战观后感400字
2015/06/04 职场文书
禁毒心得体会范文
2016/01/15 职场文书
MySQL GRANT用户授权的实现
2021/06/18 MySQL
利用Python实现翻译HTML中的文本字符串
2022/06/21 Python