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转换摩斯密码示例
Feb 16 Python
Python中用Descriptor实现类级属性(Property)详解
Sep 18 Python
Python 列表排序方法reverse、sort、sorted详解
Jan 22 Python
python字典键值对的添加和遍历方法
Sep 11 Python
python计算auc指标实例
Jul 13 Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
Mar 22 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
Jul 13 Python
Django Sitemap 站点地图的实现方法
Apr 29 Python
基于sklearn实现Bagging算法(python)
Jul 11 Python
python 使用socket传输图片视频等文件的实现方式
Aug 07 Python
python实现TCP文件传输
Mar 20 Python
django跳转页面传参的实现
Sep 17 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
PHILIPS AE3805收音机的分析打磨
2021/03/02 无线电
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
PHP 500报错的快速解决方法
2016/12/14 PHP
php微信公众号开发之音乐信息
2018/10/20 PHP
Avengerls vs KG BO3 第三场2.18
2021/03/10 DOTA
Jsonp 跨域的原理以及Jquery的解决方案
2011/06/27 Javascript
javascript学习笔记(一) 在html中使用javascript
2012/06/18 Javascript
JS实现选择TextArea内文本的方法
2015/08/03 Javascript
JS实现日期时间动态显示的方法
2015/12/07 Javascript
JavaScript必知必会(六) delete in instanceof
2016/06/08 Javascript
jQuery实现边框动态效果的实例代码
2016/09/23 Javascript
jQuery布局组件EasyUI Layout使用方法详解
2017/02/28 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
vue实现某元素吸顶或固定位置显示(监听滚动事件)
2017/12/13 Javascript
Vue-cli配置打包文件本地使用的教程图解
2018/08/02 Javascript
Webpack 4如何动态切割JS注入文件名详解
2019/07/09 Javascript
js在HTML的三种引用方式详解
2020/08/29 Javascript
[40:16]TFT vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[49:35]LGD vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
python实现按行切分文本文件的方法
2016/04/18 Python
python中子类继承父类的__init__方法实例
2016/12/15 Python
Python的语言类型(详解)
2017/06/24 Python
[原创]教女朋友学Python(一)运行环境搭建
2017/11/29 Python
opencv python 2D直方图的示例代码
2018/07/20 Python
Python使用pymongo模块操作MongoDB的方法示例
2018/07/20 Python
python字符串切割:str.split()与re.split()的对比分析
2019/07/16 Python
python循环输出三角形图案的例子
2019/11/22 Python
英国香水店:The Perfume Shop
2017/03/27 全球购物
数百万免费的图形资源:Freepik
2020/09/21 全球购物
幼儿园五一活动方案
2014/02/07 职场文书
大学生2014全国两会学习心得体会
2014/03/10 职场文书
2014年村官工作总结
2014/11/24 职场文书
2015年毕业生个人自荐书
2015/03/24 职场文书
2016年春季运动会加油稿
2015/07/22 职场文书
MySQL创建管理子分区
2022/04/13 MySQL