Python3实现Web网页图片下载


Posted in Python onJanuary 28, 2016

先来介绍一些python web编程基础知识

1. GET与POST区别

1)POST是被设计用来向web服务器上放东西的,而GET是被设计用来从服务器取东西的,GET也能够向服务器传送较少的数据,而Get之所以也能传送数据,只是用来设计告诉服务器,你到底需要什么样的数据.POST的信息作为HTTP 请求的内容,而GET是在HTTP 头部传输的;

2)POST与GET在HTTP 中传送的方式不同,GET的参数是在HTTP 的头部传送的,而Post的数据则是在HTTP 请求的内容里传送;

3)POST传输数据时,不需要在URL中显示出来,而GET方法要在URL中显示;

4)GET方法由于受到URL长度的限制,只能传递大约1024字节;POST传输的数据量大,可以达到2M

2. Cookies技术

Cookies现在经常被大家提到,那么到底什么是Cookies,它有什么作用 呢?

Cookies是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术。Cookies是当你浏览某网站 时,由Web服务器置于你硬盘上的一个非常小的文本文件,它可以记录你的用户ID、密码、浏览过的网页、停留的时间等信息。

当你再次来到该网站时,网站通过读取Cookies,得知你的相关信息,就可以做出相应的动作,如在页面显示欢迎你的标语,或者让你不用输入ID、密码就直接登录等等。

从本质上讲,它可以看作是你的身份证。但Cookies不能作为代码执行,也不会传送病毒,且为你所专有,并只能由提供它的服务器来读取。

保存的信息片断以“名/值”对(name-value pairs)的形式储存,一个“名/值”对仅仅是一条命名的数据。

一个网站只能取得它放在你的电脑中的信息,它无法从其它的Cookies文件中取得信息,也无法得到你的电脑上的其它任何东西。

Cookies中的内容大多数经过了加密处理,因此一般用户看来只是一些毫无意义的字母数字组合,只有服务器的CGI处理程序才知道它们真正的含义。

Python3通过Web网页图片下载基本功能点

  • 要实现的主要功能点:
  • 解析网页中的图片链接
  • 对图片链接进行检测,如果图片格式 图片大小不符合要求,则不下载
  • 加入异常处理机制
  • 自动文件名提取,从图片链接直接提取文件名

Python3通过Web网页图片下载参考代码:

from urllib import request
import threading
from time import sleep,ctime
from html import parser
def downjpg( filepath,FileName ="default.jpg" ):
 try:
  web = request.urlopen( filepath)
  print("访问网络文件"+filepath+"\n")
  jpg = web.read()
  DstDir="E:\\image\\"
  print("保存文件"+DstDir+FileName+"\n")
  try:
   File = open( DstDir+FileName,"wb" )
   File.write( jpg)
   File.close()
   return
  except IOError:
   print("error\n")
   return
 except Exception:
  print("error\n")
  return
def downjpgmutithread( filepathlist ):
 print("共有%d个文件需要下载"%len(filepathlist))
 for file in filepathlist:
  print( file )
 print("开始多线程下载")
 task_threads=[] #存储线程
 count=1
 for file in filepathlist:
  t= threading.Thread( target=downjpg,args=(file,"%d.jpg"%count) )
  count=count+1
  task_threads.append(t)
 for task in task_threads:
  task.start()
 for task in task_threads:
  task.join() #等待所有线程结束
 print("线程结束")
class parserLinks( parser.HTMLParser):
 filelist=[]
 def handle_starttag(self,tag,attrs):
  if tag == 'img':
   for name,value in attrs:
    if name == 'src':
     print( value)
     self.filelist.append(value)
     #print( self.get_starttag_text() )
 def getfilelist(self):
  return self.filelist
def main(WebUrl):
 #globals flist
 if __name__ == "__main__":
  lparser = parserLinks()
  web = request.urlopen( WebUrl )
  #context= web.read()
  for context in web.readlines():
   _str="%s"%context
   try:
    lparser.feed( _str)
   except parser.HTMLParseError:
    #print( "parser error")
    pass
  web.close()
  imagelist= lparser.getfilelist()
  downjpgmutithread( imagelist)  
  #downjpgmutithread( flist)
#WebUrl="http://www.baidu.com/" #要抓去的网页链接,默认保存到e盘
WebUrl="http://hi.baidu.com/yuyinxuezi/item/df0b59140a06be27f6625cd4"
main(WebUrl)

以上就是Python3实现Web网页图片下载的相关介绍,希望对大家的学习有所帮助。

Python 相关文章推荐
使用python实现正则匹配检索远端FTP目录下的文件
Mar 25 Python
python实现向ppt文件里插入新幻灯片页面的方法
Apr 28 Python
Python科学计算之Pandas详解
Jan 15 Python
python实现验证码识别功能
Jun 07 Python
一文带你了解Python中的字符串是什么
Nov 20 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
Jul 15 Python
python tkinter实现彩球碰撞屏保
Jul 30 Python
python3常用的数据清洗方法(小结)
Oct 31 Python
Python time库基本使用方法分析
Dec 13 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
Jun 03 Python
python3实现名片管理系统(控制台版)
Nov 29 Python
Python 把两层列表展开平铺成一层(5种实现方式)
Apr 07 Python
Python正则获取、过滤或者替换HTML标签的方法
Jan 28 #Python
Python每天必学之bytes字节
Jan 28 #Python
Python装饰器入门学习教程(九步学习)
Jan 28 #Python
基于Python如何使用AIML搭建聊天机器人
Jan 27 #Python
使用Python写个小监控
Jan 27 #Python
基于Python实现通过微信搜索功能查看谁把你删除了
Jan 27 #Python
Python图像灰度变换及图像数组操作
Jan 27 #Python
You might like
基于PHP+MySQL的聊天室设计
2006/10/09 PHP
检查用户名是否已在mysql中存在的php写法
2014/01/20 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
php实现的xml操作类
2016/01/15 PHP
Yii编程开发常见调用技巧集锦
2016/07/15 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
2016/10/08 PHP
laravel利用中间件做防非法登录和权限控制示例
2019/10/21 PHP
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
zTree插件之多选下拉菜单实例代码
2013/11/06 Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
2013/12/12 Javascript
javascript实现动态表头及表列的展现方法
2015/07/14 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
2016/11/09 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
2017/02/16 Javascript
使用express获取微信小程序二维码小记
2019/05/21 Javascript
vue+flask实现视频合成功能(拖拽上传)
2021/03/04 Vue.js
[03:34]2014DOTA2西雅图国际邀请赛 淘汰赛7月15日TOPPLAY
2014/07/15 DOTA
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
在Python的Flask框架中使用模版的入门教程
2015/04/20 Python
浅谈机器学习需要的了解的十大算法
2017/12/15 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
2018/02/24 Python
pandas 两列时间相减换算为秒的方法
2018/04/20 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
Python正则表达式学习小例子
2020/03/03 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
2020/06/11 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
2020/11/22 Python
使用canvas实现黑客帝国数字雨效果
2020/01/02 HTML / CSS
StubHub西班牙:购买和出售全球活动门票
2017/06/05 全球购物
法国在线购买汽车轮胎网站:123pneus.fr
2019/02/25 全球购物
Doyoueven官网:澳大利亚健身服饰和配饰品牌
2019/03/24 全球购物
新西兰Bookabach:查找全球度假屋
2020/12/03 全球购物
项目专员岗位职责
2013/12/04 职场文书
毕业生个人总结
2015/02/28 职场文书
阿甘正传观后感
2015/06/01 职场文书
上学路上观后感
2015/06/16 职场文书
Django 实现jwt认证的示例
2021/04/30 Python
vue修饰符.capture和.self的区别
2022/04/22 Vue.js