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绘图方法实例入门
May 19 Python
python框架django基础指南
Sep 08 Python
python基础教程项目三之万能的XML
Apr 02 Python
使用 Python 实现文件递归遍历的三种方式
Jul 18 Python
对PyTorch torch.stack的实例讲解
Jul 30 Python
对python修改xml文件的节点值方法详解
Dec 24 Python
对pyqt5中QTabWidget的相关操作详解
Jun 21 Python
Python中的支持向量机SVM的使用(附实例代码)
Jun 26 Python
python3.7 sys模块的具体使用
Jul 22 Python
tensorflow实现训练变量checkpoint的保存与读取
Feb 10 Python
keras CNN卷积核可视化,热度图教程
Jun 22 Python
python实现快速文件格式批量转换的方法
Oct 16 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获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
2012/09/23 PHP
PHP实现关键字搜索后描红功能示例
2019/07/03 PHP
基于jquery实现的鼠标滑过按钮改变背景图片
2011/07/15 Javascript
js解析与序列化json数据(一)json.stringify()的基本用法
2013/02/01 Javascript
jquery增加时编辑jqGrid(实例代码)
2013/11/08 Javascript
JS二维数组的定义说明
2014/03/03 Javascript
jQuery解析json数据实例分析
2015/11/24 Javascript
基于jquery实现轮播特效
2016/04/22 Javascript
jQuery中队列queue()函数的实例教程
2016/05/03 Javascript
bootstrap日期控件问题(双日期、清空等问题解决)
2017/04/19 Javascript
微信通过页面(H5)直接打开本地app的解决方法
2017/09/09 Javascript
让bootstrap的carousel支持滑动滚屏的实现代码
2017/11/27 Javascript
nodejs更改项目端口号的方法
2018/05/13 NodeJs
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
JS中实现浅拷贝和深拷贝的代码详解
2019/06/05 Javascript
[01:14:19]NAVI vs Mineski 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
介绍Python中的一些高级编程技巧
2015/04/02 Python
利用ctypes提高Python的执行速度
2016/09/09 Python
几行Python代码爬取3000+上市公司的信息
2019/01/24 Python
python顺序执行多个py文件的方法
2019/06/29 Python
Python Django2.0集成Celery4.1教程
2019/11/19 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
2020/12/31 Python
python 制作本地应用搜索工具
2021/02/27 Python
香港通票:Hong Kong Pass
2019/02/26 全球购物
德国净水壶和滤芯品牌:波尔德PearlCo(家用净水器)
2020/04/29 全球购物
医务人员自我评价
2014/01/26 职场文书
电子商务个人职业生涯规划范文
2014/02/12 职场文书
幼儿园教师岗位职责
2014/03/17 职场文书
大学国际贸易专业自荐信
2014/06/05 职场文书
物联网工程专业推荐信
2014/09/08 职场文书
大学毕业晚会开场白
2015/05/29 职场文书
地道战观后感500字
2015/06/04 职场文书
品牌形象定位,全面分析
2019/07/23 职场文书
Python OpenCV 彩色与灰度图像的转换实现
2021/06/05 Python
Redis字典实现、Hash键冲突及渐进式rehash详解
2021/09/04 Redis
SpringBoot中HttpSessionListener的简单使用方式
2022/03/17 Java/Android