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文件及目录操作实例详解
Jun 04 Python
python 简单的多线程链接实现代码
Aug 28 Python
python实现mysql的读写分离及负载均衡
Feb 04 Python
python实现隐马尔科夫模型HMM
Mar 25 Python
python去掉 unicode 字符串前面的u方法
Oct 21 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
Jul 19 Python
Tornado实现多进程/多线程的HTTP服务详解
Jul 25 Python
python3 selenium自动化测试 强大的CSS定位方法
Aug 23 Python
Django查询优化及ajax编码格式原理解析
Mar 25 Python
python递归函数用法详解
Oct 26 Python
解决selenium+Headless Chrome实现不弹出浏览器自动化登录的问题
Jan 09 Python
Python OpenCV超详细讲解基本功能
Apr 02 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
新浪新闻小偷
2006/10/09 PHP
php header功能的使用
2013/10/28 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
2015/03/23 PHP
php示例详解Constructor Prototype Pattern 原型模式
2015/10/15 PHP
php无限分类使用concat如何实现
2015/11/05 PHP
PHP框架laravel的.env文件配置教程
2017/06/07 PHP
Laravel给生产环境添加监听事件(SQL日志监听)
2017/06/19 PHP
setInterval 和 setTimeout会产生内存溢出
2008/02/15 Javascript
javascript attachEvent绑定多个事件执行顺序问题
2010/10/20 Javascript
jQuery 1.5最新版本的改进细节分析
2011/01/19 Javascript
jQuery获取页面元素绝对与相对位置的方法
2015/06/10 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
2015/09/10 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
jQuery EasyUI之DataGrid使用实例详解
2016/01/04 Javascript
学习JavaScript设计模式之享元模式
2016/01/18 Javascript
jQuery事件委托之Safari
2016/07/05 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
在javascript中,null>=0 为真,null==0却为假,null的值详解
2017/02/22 Javascript
async/await优雅的错误处理方法总结
2019/01/30 Javascript
移动端吸顶fixbar的解决方案详解
2019/07/17 Javascript
微信小程序获取地理位置及经纬度授权代码实例
2019/09/18 Javascript
vue 中this.$set 动态绑定数据的案例讲解
2021/01/29 Vue.js
python 输出一个两行字符的变量
2009/02/05 Python
Python正则表达式常用函数总结
2017/06/24 Python
如何用python整理附件
2018/05/13 Python
python迭代dict的key和value的方法
2018/07/06 Python
Python自定义函数计算给定日期是该年第几天的方法示例
2019/05/30 Python
python将数组n等分的实例
2019/12/02 Python
MNIST数据集转化为二维图片的实现示例
2020/01/10 Python
解决pytorch下出现multi-target not supported at的一种可能原因
2021/02/06 Python
黑猩猩商店:The Chimp Store
2020/02/12 全球购物
办公用房租赁协议书
2014/11/29 职场文书
2015年售票员工作总结
2015/04/29 职场文书
详解Python中的进程和线程
2021/06/23 Python
Python函数对象与闭包函数
2022/04/13 Python