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 相关文章推荐
wxpython 学习笔记 第一天
Mar 16 Python
在Linux下使用Python的matplotlib绘制数据图的教程
Jun 11 Python
Python上传package到Pypi(代码简单)
Feb 06 Python
Python 中 list 的各项操作技巧
Apr 13 Python
python3人脸识别的两种方法
Apr 25 Python
windows10下安装TensorFlow Object Detection API的步骤
Jun 13 Python
python 二维矩阵转三维矩阵示例
Nov 30 Python
Pytorch实现的手写数字mnist识别功能完整示例
Dec 13 Python
Windows下python3安装tkinter的问题及解决方法
Jan 06 Python
python解析xml文件方式(解析、更新、写入)
Mar 05 Python
python3 正则表达式基础廖雪峰
Mar 25 Python
Django Admin 上传文件到七牛云的示例代码
Jun 20 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使用curl简单抓取远程url的方法
2015/03/13 PHP
ThinkPHP表单令牌错误的相关解决方法分析
2016/05/20 PHP
jquery+ajax每秒向后台发送请求数据然后返回页面的代码
2011/01/17 Javascript
用JS控制回车事件的代码
2011/02/20 Javascript
jquery创建一个新的节点对象(自定义结构/内容)的好方法
2013/01/21 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
简易的投票系统以及js刷票思路和方法
2015/04/07 Javascript
Jquery解析json字符串及json数组的方法
2015/05/29 Javascript
JS+CSS实现经典的左侧竖向滑动菜单效果
2015/09/23 Javascript
后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
2016/07/05 Javascript
基于JavaScript实现瀑布流效果
2017/03/29 Javascript
node.js操作mongodb简单示例分享
2017/05/25 Javascript
vue项目出现页面空白的解决方案
2019/10/31 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
2019/11/07 Javascript
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
vscode 插件开发 + vue的操作方法
2020/06/05 Javascript
Vue 解决通过this.$refs来获取DOM或者组件报错问题
2020/07/28 Javascript
结合axios对项目中的api请求进行封装操作
2020/09/21 Javascript
[33:23]VG vs Pain 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
tornado捕获和处理404错误的方法
2014/02/26 Python
python使用PyGame模块播放声音的方法
2015/05/20 Python
django实现分页的方法
2015/05/26 Python
python实现彩票系统
2020/06/28 Python
jenkins配置python脚本定时任务过程图解
2019/10/29 Python
python3读取autocad图形文件.py实例
2020/06/05 Python
python删除文件、清空目录的实现方法
2020/09/23 Python
Django Form常用功能及代码示例
2020/10/13 Python
波兰运动鞋网上商店:e-Sporting
2018/02/16 全球购物
毕业生个人求职信范例分享
2013/12/17 职场文书
毕业自我鉴定书
2014/03/24 职场文书
励志演讲稿800字
2014/08/21 职场文书
医院领导班子整改方案
2014/10/01 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
生鲜超市—未来中国最具有潜力零售业态
2019/08/02 职场文书
奖学金申请书(范文)
2019/08/14 职场文书
MySQL如何修改字段类型和字段长度
2022/06/10 MySQL