使用Python保存网页上的图片或者保存页面为截图


Posted in Python onMarch 05, 2016

Python保存网页图片
这个是个比较简单的例子,网页中的图片地址都是使用'http://。。。。.jpg'这种方式直接定义的。

使用前,可以先建立好一个文件夹用于保存图片,本例子中使用的文件夹是 d:\\pythonPath这个文件夹

代码如下:

# -*- coding: UTF-8 -*- 
import os,re,urllib,uuid 
 
#首先定义云端的网页,以及本地保存的文件夹地址 
urlPath='http://gamebar.com/' 
localPath='d:\\pythonPath' 
 
 
#从一个网页url中获取图片的地址,保存在 
#一个list中返回 
def getUrlList(urlParam): 
  urlStream=urllib.urlopen(urlParam) 
  htmlString=urlStream.read() 
  if( len(htmlString)!=0 ): 
    patternString=r'http://.{0,50}\.jpg' 
    searchPattern=re.compile(patternString) 
    imgUrlList=searchPattern.findall(htmlString) 
    return imgUrlList 
 
     
#生成一个文件名字符串  
def generateFileName(): 
  return str(uuid.uuid1()) 
 
   
#根据文件名创建文件  
def createFileWithFileName(localPathParam,fileName): 
  totalPath=localPathParam+'\\'+fileName 
  if not os.path.exists(totalPath): 
    file=open(totalPath,'a+') 
    file.close() 
    return totalPath 
   
 
#根据图片的地址,下载图片并保存在本地  
def getAndSaveImg(imgUrl): 
  if( len(imgUrl)!= 0 ): 
    fileName=generateFileName()+'.jpg' 
    urllib.urlretrieve(imgUrl,createFileWithFileName(localPath,fileName)) 
 
 
#下载函数 
def downloadImg(url): 
  urlList=getUrlList(url) 
  for urlString in urlList: 
    getAndSaveImg(urlString) 
     
downloadImg(urlPath)

保存的文件如下:

使用Python保存网页上的图片或者保存页面为截图

网页的一部分保存为图片
主要思路是selenium+phantomjs(中文网页需要设置字体)+PIL切图

def webscreen():
  url = 'http://www.xxx.com'
  driver = webdriver.PhantomJS()
  driver.set_page_load_timeout(300)
  driver.set_window_size(1280,800)
  driver.get(url)
  imgelement = driver.find_element_by_id('XXXX')
  location = imgelement.location
  size = imgelement.size
  savepath = r'XXXX.png'
  driver.save_screenshot(savepath)
  im = Image.open(savepath)
  left = location['x']
  top = location['y']
  right = left + size['width']
  bottom = location['y'] + size['height']
  im = im.crop((left,top,right,bottom))
  im.save(savepath)
Python 相关文章推荐
Python单链表的简单实现方法
Sep 23 Python
Python中获取网页状态码的两个方法
Nov 03 Python
python实现kNN算法
Dec 20 Python
python 二维数组90度旋转的方法
Jan 28 Python
Python实现的旋转数组功能算法示例
Feb 23 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
Jul 15 Python
python使用minimax算法实现五子棋
Jul 29 Python
python查看数据类型的方法
Oct 12 Python
python科学计算之scipy——optimize用法
Nov 25 Python
numpy:找到指定元素的索引示例
Nov 26 Python
Python enumerate函数遍历数据对象组合过程解析
Dec 11 Python
查看jupyter notebook每个单元格运行时间实例
Apr 22 Python
Python发送form-data请求及拼接form-data内容的方法
Mar 05 #Python
Python多线程爬虫简单示例
Mar 04 #Python
使用Python来开发Markdown脚本扩展的实例分享
Mar 04 #Python
使用py2exe在Windows下将Python程序转为exe文件
Mar 04 #Python
用Python编写简单的微博爬虫
Mar 04 #Python
python相似模块用例
Mar 04 #Python
Python程序中用csv模块来操作csv文件的基本使用教程
Mar 03 #Python
You might like
第十二节--类的自动加载
2006/11/16 PHP
解析php file_exists无效的解决办法
2013/06/26 PHP
php设置session值和cookies的学习示例
2014/03/21 PHP
PHP使用GIFEncoder类生成的GIF动态图片验证码
2014/07/01 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
用js实现判断当前网址的来路如果不是指定的来路就跳转到指定页面
2011/05/02 Javascript
jQuery之$(document).ready()使用介绍
2012/04/05 Javascript
javascript 数组排序函数sort和reverse使用介绍
2013/11/21 Javascript
asm.js使用示例代码
2013/11/28 Javascript
JS中window.open全屏命令解析及使用示例
2013/12/11 Javascript
js取值中form.all和不加all的区别介绍
2014/01/20 Javascript
AngularJS基础知识
2014/12/21 Javascript
JS实现可拖曳、可关闭的弹窗效果
2015/09/26 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
2016/03/05 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
2016/08/02 Javascript
Vue原理剖析 实现双向绑定MVVM
2017/05/03 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
JS动画实现回调地狱promise的实例代码详解
2018/11/08 Javascript
node.js中fs文件系统模块的使用方法实例详解
2020/02/13 Javascript
ES6中Set和Map用法实例详解
2020/03/02 Javascript
[02:27]2014DOTA2国际邀请赛 VG赛后采访:更大的挑战在等着我们
2014/07/13 DOTA
Python批量重命名同一文件夹下文件的方法
2015/05/25 Python
Python写的一个定时重跑获取数据库数据
2016/12/28 Python
django rest framework之请求与响应(详解)
2017/11/06 Python
Python中的 enum 模块源码详析
2019/01/09 Python
Python实现的大数据分析操作系统日志功能示例
2019/02/11 Python
基于 HTML5 WebGL 实现的垃圾分类系统
2019/10/08 HTML / CSS
使用canvas实现黑客帝国数字雨效果
2020/01/02 HTML / CSS
html5移动端自适应布局的实现
2020/04/15 HTML / CSS
产品委托授权书范本
2014/09/16 职场文书
运动会广播稿50字
2015/08/19 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
python opencv通过4坐标剪裁图片
2021/06/05 Python
详解使用内网穿透工具Ngrok代理本地服务
2022/03/31 Servers
python基础之//、/与%的区别详解
2022/06/10 Python