Python实现简单网页图片抓取完整代码实例


Posted in Python onDecember 15, 2017

利用python抓取网络图片的步骤是:
1、根据给定的网址获取网页源代码
2、利用正则表达式把源代码中的图片地址过滤出来
3、根据过滤出来的图片地址下载网络图片

以下是比较简单的一个抓取某一个百度贴吧网页的图片的实现:

# -*- coding: utf-8 -*- 
# feimengjuan 
import re 
import urllib 
import urllib2 
#抓取网页图片  
#根据给定的网址来获取网页详细信息,得到的html就是网页的源代码 
def getHtml(url): 
  page = urllib.urlopen(url) 
  html = page.read() 
  return html 
 def getImg(html): 
  #利用正则表达式把源代码中的图片地址过滤出来 
  reg = r'src="(.+?\.jpg)" pic_ext' 
  imgre = re.compile(reg) 
  imglist = imgre.findall(html) #表示在整个网页中过滤出所有图片的地址,放在imglist中 
  x = 0 
  for imgurl in imglist: 
    urllib.urlretrieve(imgurl,'%s.jpg' %x) #打开imglist中保存的图片网址,并下载图片保存在本地 
    x = x + 1 
 html = getHtml("http://tieba.baidu.com/p/2460150866")#获取该网址网页详细信息,得到的html就是网页的源代码 
getImg(html)#从网页源代码中分析并下载保存图片

进一步对代码进行了整理,在本地创建了一个“图片”文件夹来保存图片

# -*- coding: utf-8 -*- 
# feimengjuan 
import re 
import urllib 
import urllib2 
import os 
#抓取网页图片  
#根据给定的网址来获取网页详细信息,得到的html就是网页的源代码 
def getHtml(url): 
  page = urllib.urlopen(url) 
  html = page.read() 
  return html 
 
#创建保存图片的文件夹 
def mkdir(path): 
  path = path.strip() 
  # 判断路径是否存在 
  # 存在  True 
  # 不存在 Flase 
  isExists = os.path.exists(path) 
  if not isExists: 
    print u'新建了名字叫做',path,u'的文件夹' 
    # 创建目录操作函数 
    os.makedirs(path) 
    return True 
  else: 
    # 如果目录存在则不创建,并提示目录已经存在 
    print u'名为',path,u'的文件夹已经创建成功' 
    return False 
# 输入文件名,保存多张图片 
def saveImages(imglist,name): 
  number = 1 
  for imageURL in imglist: 
    splitPath = imageURL.split('.') 
    fTail = splitPath.pop() 
    if len(fTail) > 3: 
      fTail = 'jpg' 
    fileName = name + "/" + str(number) + "." + fTail 
    # 对于每张图片地址,进行保存 
    try: 
      u = urllib2.urlopen(imageURL) 
      data = u.read() 
      f = open(fileName,'wb+') 
      f.write(data) 
      print u'正在保存的一张图片为',fileName 
      f.close() 
    except urllib2.URLError as e: 
      print (e.reason) 
    number += 1  
#获取网页中所有图片的地址 
def getAllImg(html): 
  #利用正则表达式把源代码中的图片地址过滤出来 
  reg = r'src="(.+?\.jpg)" pic_ext' 
  imgre = re.compile(reg) 
  imglist = imgre.findall(html) #表示在整个网页中过滤出所有图片的地址,放在imglist中 
  return imglist   
#创建本地保存文件夹,并下载保存图片 
if __name__ == '__main__': 
  html = getHtml("http://tieba.baidu.com/p/2460150866")#获取该网址网页详细信息,得到的html就是网页的源代码 
  path = u'图片' 
  mkdir(path) #创建本地文件夹 
  imglist = getAllImg(html) #获取图片的地址列表 
  saveImages(imglist,path) # 保存图片

结果在“图片”文件夹下保存了几十张图片,如截图:

Python实现简单网页图片抓取完整代码实例

总结

以上就是本文关于Python实现简单网页图片抓取完整代码实例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
python入门之语句(if语句、while语句、for语句)
Jan 19 Python
在Python中处理列表之reverse()方法的使用教程
May 21 Python
Python SqlAlchemy动态添加数据表字段实例解析
Feb 07 Python
Python简单计算文件MD5值的方法示例
Apr 11 Python
使用NumPy和pandas对CSV文件进行写操作的实例
Jun 14 Python
python利用pandas将excel文件转换为txt文件的方法
Oct 23 Python
pygame实现打字游戏
Feb 19 Python
PyTorch的自适应池化Adaptive Pooling实例
Jan 03 Python
pytorch实现MNIST手写体识别
Feb 14 Python
python 字典item与iteritems的区别详解
Apr 25 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
Dec 09 Python
Python中re模块的元字符使用小结
Apr 07 Python
利用numpy实现一、二维数组的拼接简单代码示例
Dec 15 #Python
神经网络python源码分享
Dec 15 #Python
神经网络理论基础及Python实现详解
Dec 15 #Python
浅谈机器学习需要的了解的十大算法
Dec 15 #Python
python实现协同过滤推荐算法完整代码示例
Dec 15 #Python
python3大文件解压和基本操作
Dec 15 #Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
Dec 15 #Python
You might like
浅谈php的优缺点
2015/07/14 PHP
PHP中quotemeta()函数的用法讲解
2019/04/04 PHP
jQuery异步获取json数据方法汇总
2014/12/22 Javascript
jQuery使用之标记元素属性用法实例
2015/01/19 Javascript
jQuery取得iframe中元素的常用方法详解
2016/01/14 Javascript
JS敏感词过滤代码
2016/12/23 Javascript
完美解决input[type=number]无法显示非数字字符的问题
2017/02/28 Javascript
ES6模块化的import和export用法方法总结
2017/08/08 Javascript
Angular简单验证功能示例
2017/12/22 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
VUE-Table上绑定Input通过render实现双向绑定数据的示例
2018/08/27 Javascript
ztree加载完成后显示勾选节点的实现代码
2018/10/22 Javascript
基于Vue实现的多条件筛选功能的详解(类似京东和淘宝功能)
2019/05/07 Javascript
three.js利用卷积法如何实现物体描边效果
2019/11/27 Javascript
如何在postman测试用例中实现断言过程解析
2020/07/09 Javascript
JavaScript代码简化技巧实例解析
2020/09/09 Javascript
基于vue的video播放器的实现示例
2021/02/19 Vue.js
Python tornado队列示例-一个并发web爬虫代码分享
2018/01/09 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
2018/12/05 Python
Python实现链表反转的方法分析【迭代法与递归法】
2020/02/22 Python
python读取文件指定行内容实例讲解
2020/03/02 Python
Python下使用Trackbar实现绘图板
2020/10/27 Python
css实例教程 一款纯css3实现的超炫动画背画特效
2014/11/05 HTML / CSS
美国时尚女装在线:Missguided
2016/12/03 全球购物
美国在线鲜花速递:ProFlowers
2017/01/05 全球购物
Office DEPOT法国官网:欧迪办公用品采购
2018/01/03 全球购物
SIXPAD智能健身仪英国官网:革命性的训练装备品牌
2018/09/27 全球购物
面向对象设计的原则是什么
2013/02/13 面试题
室内设计专业毕业生求职信
2014/05/02 职场文书
单位工作证明书格式
2014/10/04 职场文书
工作检讨书范文
2015/01/23 职场文书
建筑工程材料员岗位职责
2015/04/11 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书
Jackson 反序列化时实现大小写不敏感设置
2021/06/29 Java/Android
Spring Boot 整合 Apache Dubbo的示例代码
2021/07/04 Java/Android
悬疑名作《朋友游戏》动画无字ED宣传片 新角色公开
2022/04/13 日漫