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文件和目录操作函数小结
Jul 11 Python
安装dbus-python的简要教程
May 05 Python
在DigitalOcean的服务器上部署flaskblog应用
Dec 19 Python
Python的Socket编程过程中实现UDP端口复用的实例分享
Mar 19 Python
Python性能提升之延迟初始化
Dec 04 Python
基于python实现在excel中读取与生成随机数写入excel中
Jan 04 Python
python中的随机函数random的用法示例
Jan 27 Python
python实现微信小程序自动回复
Sep 10 Python
解决python tkinter界面卡死的问题
Jul 17 Python
Python中使用threading.Event协调线程的运行详解
May 02 Python
jupyter notebook快速入门及使用详解
Nov 13 Python
python中time tzset()函数实例用法
Feb 18 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中ADODB类详解
2008/03/25 PHP
php教程之phpize使用方法
2014/02/12 PHP
Zend Framework实现将session存储在memcache中的方法
2016/03/22 PHP
PHP云打印类完整示例
2016/10/15 PHP
php合并数组并保留键值的实现方法
2018/03/12 PHP
PHP实现微信小程序人脸识别刷脸登录功能
2018/05/24 PHP
laravel实现按时间日期进行分组统计方法示例
2019/03/23 PHP
php实现统计IP数及在线人数的示例代码
2020/07/22 PHP
javascript对数组的常用操作代码 数组方法总汇
2011/01/27 Javascript
基于JQuery的浮动DIV显示提示信息并自动隐藏
2011/02/11 Javascript
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
2013/09/16 Javascript
js时间戳格式化成日期格式的多种方法
2013/11/11 Javascript
javascript定义变量时有var和没有var的区别探讨
2014/07/21 Javascript
javascript中的正则表达式使用详解
2015/08/30 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
2016/07/06 Javascript
输入法的回车与消息发送快捷键回车的冲突解决方法
2016/08/09 Javascript
微信小程序 数据封装,参数传值等经验分享
2017/01/09 Javascript
原生JavaScript实现Ajax异步请求
2017/11/19 Javascript
通过实例了解Javascript柯里化流程
2020/03/03 Javascript
vue中是怎样监听数组变化的
2020/10/24 Javascript
浅析Python数据处理
2018/05/02 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
2018/05/24 Python
django项目简单调取百度翻译接口的方法
2019/08/06 Python
详解用python计算阶乘的几种方法
2019/08/14 Python
DataFrame 数据合并实现(merge,join,concat)
2020/06/14 Python
Django Session和Cookie分别实现记住用户登录状态操作
2020/07/02 Python
详解python的super()的作用和原理
2020/10/29 Python
Python基于execjs运行js过程解析
2020/11/27 Python
Dr. Martens马汀博士官网:马丁靴始祖品牌
2016/10/15 全球购物
英国最大的LED专业零售商:Led Hut
2018/03/16 全球购物
优秀党支部事迹材料
2014/01/14 职场文书
违反交通法规检讨书
2014/09/10 职场文书
婚庆公司计划书
2014/09/15 职场文书
房地产置业顾问岗位职责
2015/04/11 职场文书
MySQL数据库实验之 触发器和存储过程
2022/06/21 MySQL