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实现查询IP地址所在地
Mar 29 Python
Python中的迭代器与生成器高级用法解析
Jun 28 Python
正确理解Python中if __name__ == '__main__'
Jan 24 Python
Python跳出多重循环的方法示例
Jul 03 Python
django url到views参数传递的实例
Jul 19 Python
python 检查数据中是否有缺失值,删除缺失值的方式
Dec 02 Python
基于Python和PyYAML读取yaml配置文件数据
Jan 13 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
Jan 20 Python
Python使用OpenPyXL处理Excel表格
Jul 02 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
Jul 07 Python
pandas map(),apply(),applymap()区别解析
Feb 24 Python
python3美化表格数据输出结果的实现代码
Apr 14 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
BBS(php & mysql)完整版(八)
2006/10/09 PHP
用PHP写的基于Memcache的Queue实现代码
2011/11/27 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
PHP使用http_build_query()构造URL字符串的方法
2016/04/02 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
2017/06/17 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
javascript生成/解析dom的CDATA类型的字段的代码
2007/04/22 Javascript
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
JavaScript几种形式的树结构菜单
2010/05/10 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
jquery实现人性化的有选择性禁用鼠标右键
2014/06/30 Javascript
15个jquery常用方法、小技巧分享
2015/01/13 Javascript
在线所见即所得HTML编辑器的实现原理浅析
2015/04/25 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
2016/11/28 Javascript
深入理解Angular.JS中的Scope继承
2017/06/04 Javascript
如何更好的编写js async函数
2018/05/13 Javascript
详解.vue文件解析的实现
2018/06/11 Javascript
Js中使用正则表达式验证输入是否有特殊字符
2018/09/07 Javascript
Python实例分享:快速查找出被挂马的文件
2014/06/08 Python
python实现图像识别功能
2018/01/29 Python
python学习入门细节知识点
2018/03/29 Python
Numpy中转置transpose、T和swapaxes的实例讲解
2018/04/17 Python
Python迭代器与生成器用法实例分析
2018/07/09 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
2019/12/23 Python
Pytorch之保存读取模型实例
2019/12/30 Python
python模拟实现斗地主发牌
2020/01/07 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
2020/01/08 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
美国和加拿大房车出售在线分类广告:RVT.com
2018/04/23 全球购物
Guess欧洲官网:美国服饰品牌
2019/08/06 全球购物
空指针到底是什么
2012/08/07 面试题
标记环网Toke Ring IEEE802.5
2014/05/26 面试题
医药工作者的求职信范文
2013/09/21 职场文书
资料员岗位职责
2013/11/17 职场文书
中介公司区域经理岗位职责范本
2014/03/02 职场文书
TypeScript 使用 Tuple Union 声明函数重载
2022/04/07 Javascript