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 相关文章推荐
Windows下PyMongo下载及安装教程
Apr 27 Python
简单谈谈python中的Queue与多进程
Aug 25 Python
python的多重继承的理解
Aug 06 Python
Python实现的多线程同步与互斥锁功能示例
Nov 30 Python
python merge、concat合并数据集的实例讲解
Apr 12 Python
python方法生成txt标签文件的实例代码
May 10 Python
Windows系统下PhantomJS的安装和基本用法
Oct 21 Python
python logging日志模块原理及操作解析
Oct 12 Python
python/Matplotlib绘制复变函数图像教程
Nov 21 Python
Python imutils 填充图片周边为黑色的实现
Jan 19 Python
基于python检查SSL证书到期情况代码实例
Apr 04 Python
python如何设置静态变量
Sep 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写的获取各搜索蜘蛛爬行记录代码
2012/08/21 PHP
PHP数组循环操作详细介绍 附实例代码
2013/02/03 PHP
小谈php正则提取图片地址
2014/03/27 PHP
Laravel5框架自定义错误页面配置操作示例
2019/04/17 PHP
jQuery ajax 路由和过滤器使用说明
2011/08/02 Javascript
jQuery随机切换图片的小例子
2013/04/18 Javascript
IE6 hack for js 集锦
2014/09/23 Javascript
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
基于javascript实现tab选项卡切换特效调试笔记
2016/03/30 Javascript
js实现各种复制到剪贴板的方法(分享)
2016/10/27 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
js实现三级联动效果(简单易懂)
2017/03/27 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
利用vue-i18n实现多语言切换效果的方法
2019/06/19 Javascript
vue-cli3中配置alias和打包加hash值操作
2020/09/04 Javascript
[00:14]PWL:老朋友Mushi拍VLOG与中国玩家问好
2020/11/04 DOTA
对python dataframe逻辑取值的方法详解
2019/01/30 Python
Python实现多态、协议和鸭子类型的代码详解
2019/05/05 Python
pycharm内无法import已安装的模块问题解决
2020/02/12 Python
python 控制台单行刷新,多行刷新实例
2020/02/19 Python
Python制作数据预测集成工具(值得收藏)
2020/08/21 Python
Python3爬虫RedisDump的安装步骤
2021/02/20 Python
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
2018/09/10 HTML / CSS
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
马来西亚领先的在线礼品店:Giftr
2018/08/23 全球购物
AP澳洲中文网:澳洲正品直邮,包税收件无忧
2019/07/12 全球购物
彪马土耳其官网:PUMA土耳其
2019/07/14 全球购物
经济管理专业毕业生自荐信范文
2014/01/02 职场文书
珍惜水资源建议书
2014/03/12 职场文书
英语自我介绍演讲稿
2014/09/01 职场文书
法人单位授权委托书范文
2014/10/06 职场文书
学校运动会广播稿
2014/10/11 职场文书
党员思想汇报材料
2014/12/19 职场文书
《吃水不忘挖井人》教学反思
2016/02/22 职场文书
redis cluster支持pipeline的实现思路
2021/06/23 Redis
springboot使用Redis作缓存使用入门教程
2021/07/25 Redis