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之使用Python查询更新数据库
Nov 25 Python
Python程序中使用SQLAlchemy时出现乱码的解决方案
Apr 24 Python
详解在Python的Django框架中创建模板库的方法
Jul 20 Python
Python实现的在特定目录下导入模块功能分析
Feb 11 Python
Python数据类型之String字符串实例详解
May 08 Python
Python API自动化框架总结
Nov 12 Python
简单了解python装饰器原理及使用方法
Dec 18 Python
Python openpyxl模块原理及用法解析
Jan 19 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
Feb 07 Python
基于Python脚本实现邮件报警功能
May 20 Python
使用npy转image图像并保存的实例
Jul 01 Python
常用的10个Python实用小技巧
Aug 10 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操作Memcache实例介绍
2013/06/14 PHP
php中用date函数获取当前时间有误的解决办法
2013/08/02 PHP
php写的AES加密解密类分享
2014/06/20 PHP
PHP基本语法实例总结
2016/09/09 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
2018/03/12 PHP
别了 JavaScript中的isXX系列
2012/08/01 Javascript
javascript:void(0)使用探讨
2013/08/27 Javascript
JavaScript onkeydown事件入门实例(键盘某个按键被按下)
2014/10/17 Javascript
javascript实现修改微信分享的标题内容等
2014/12/11 Javascript
详解AngularJS中的作用域
2015/06/17 Javascript
jQuery实现分章节锚点“回到顶部”动画特效代码
2015/10/23 Javascript
html5+javascript实现简单上传的注意细节
2016/04/18 Javascript
vueJS简单的点击显示与隐藏的效果【实现代码】
2016/05/03 Javascript
jQuery和JavaScript节点插入元素的方法对比
2016/11/18 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
2017/08/17 jQuery
Vue keep-alive实践总结(推荐)
2017/08/31 Javascript
详解React之key的使用和实践
2018/09/29 Javascript
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
2018/12/19 Javascript
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
2019/06/24 Javascript
js Array.slice的8种不同用法示例
2019/07/10 Javascript
vue项目配置同一局域网可使用ip访问的操作
2020/10/23 Javascript
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
[04:17]DOTA2完美盛典,rOtk、BurNIng携手巴图演唱《倔强》
2017/11/28 DOTA
python mysqldb连接数据库
2009/03/16 Python
python 第三方库的安装及pip的使用详解
2017/05/11 Python
使用Python读取大文件的方法
2018/02/11 Python
Python socket实现简单聊天室
2018/04/01 Python
深入了解Django View(视图系统)
2019/07/23 Python
Tensorflow使用Anaconda、pycharm安装记录
2020/07/29 Python
python实现定时发送邮件
2020/12/23 Python
我的梦想演讲稿
2014/04/30 职场文书
演讲稿的写法
2014/05/19 职场文书
教师党员批评与自我批评
2014/10/15 职场文书
车间班组长竞聘书
2015/09/15 职场文书
golang import自定义包方式
2021/04/29 Golang
MySQL sql_mode修改不生效的原因及解决
2021/05/07 MySQL