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中的hypot()方法使用简介
May 18 Python
python生成不重复随机数和对list乱序的解决方法
Apr 09 Python
Python同步遍历多个列表的示例
Feb 19 Python
Python调用百度根据经纬度查询地址的示例代码
Jul 07 Python
python切片的步进、添加、连接简单操作示例
Jul 11 Python
使用python去除图片白色像素的实例
Dec 12 Python
python2.7使用scapy发送syn实例
May 05 Python
Python如何实现爬取B站视频
May 20 Python
Python爬虫HTPP请求方法有哪些
Jun 03 Python
python rolling regression. 使用 Python 实现滚动回归操作
Jun 08 Python
python中子类与父类的关系基础知识点
Feb 02 Python
Python编程super应用场景及示例解析
Oct 05 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 include和require的区别深入解析
2013/06/17 PHP
(PHP实现)只使用++运算实现加法,减法,乘法,除法
2013/06/27 PHP
浅谈本地WAMP环境的搭建
2015/05/13 PHP
10款实用的PHP开源工具
2015/10/23 PHP
symfony2.4的twig中date用法分析
2016/03/18 PHP
php array_slice 取出数组中的一段序列实例
2016/11/04 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
2019/05/05 PHP
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
JS随即打乱数组实现代码
2012/12/03 Javascript
js猜数字小游戏的简单实现代码
2013/07/02 Javascript
使用js dom和jquery分别实现简单增删改
2014/09/11 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
2015/04/30 Javascript
JS实现生成会变大变小的圆环实例
2015/08/05 Javascript
JS打字效果的动态菜单代码分享
2015/08/21 Javascript
javascript中数组和字符串的方法对比
2016/07/20 Javascript
JS获取短信验证码倒计时的实现代码
2017/05/22 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
2017/12/20 Javascript
基于jQuery使用Ajax动态执行模糊查询功能
2018/07/05 jQuery
抖音上用记事本编写爱心小程序教程
2019/04/17 Javascript
详解Vue中组件传值的多重实现方式
2019/08/16 Javascript
Openlayers实现距离面积测量
2020/09/28 Javascript
Python3.6连接Oracle数据库的方法详解
2018/05/18 Python
python 解决flask uwsgi 获取不到全局变量的问题
2019/12/22 Python
Python下利用BeautifulSoup解析HTML的实现
2020/01/17 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
2020/03/13 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
2020/04/20 Python
为什么说python适合写爬虫
2020/06/11 Python
Django中使用Celery的方法步骤
2020/12/07 Python
浅谈Python xlwings 读取Excel文件的正确姿势
2021/02/26 Python
老海军美国官网:Old Navy
2016/09/05 全球购物
父亲的菜园教学反思
2014/02/13 职场文书
学生党员的自我评价范文
2014/03/01 职场文书
预备党员群众路线思想汇报2014
2014/10/25 职场文书
2015年公司国庆放假通知
2015/07/30 职场文书
病房管理制度范本
2015/08/06 职场文书
Python matplotlib绘制条形统计图 处理多个实验多组观测值
2022/04/21 Python