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中关于日期时间处理的问答集锦
Mar 08 Python
Python中内建函数的简单用法说明
May 05 Python
Python脚本实现12306火车票查询系统
Sep 30 Python
python处理按钮消息的实例详解
Jul 11 Python
Python设计模式之代理模式实例详解
Jan 19 Python
Python3实现的判断环形链表算法示例
Mar 07 Python
Python Django的安装配置教程图文详解
Jul 17 Python
django rest framework 实现用户登录认证详解
Jul 29 Python
python获取依赖包和安装依赖包教程
Feb 13 Python
使用Python开发个京东上抢口罩的小实例(仅作技术研究学习使用)
Mar 10 Python
Python如何优雅删除字符列表空字符及None元素
Jun 25 Python
Python 实现简单的客户端认证
Jul 29 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
ueditor 1.2.6 使用方法说明
2013/07/24 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
详解PHP中的序列化、反序列化操作
2017/03/21 PHP
PHP获取MySQL执行sql语句的查询时间方法
2018/08/21 PHP
javascript 检测浏览器类型和版本的代码
2009/09/15 Javascript
javascript实现在指定元素中垂直水平居中
2015/09/13 Javascript
jQuery基于扩展实现的倒计时效果
2016/05/14 Javascript
浅谈angular懒加载的一些坑
2016/08/20 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
2016/12/13 Javascript
巧用canvas
2017/01/21 Javascript
BootStrap实现文件上传并带有进度条效果
2017/09/11 Javascript
Bootstrap实现可折叠分组侧边导航菜单
2018/03/07 Javascript
深入浅析Vue中的slots/scoped slots
2018/04/03 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
django使用channels2.x实现实时通讯
2018/11/28 Javascript
nodejs异步编程基础之回调函数用法分析
2018/12/26 NodeJs
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
Python简单操作sqlite3的方法示例
2017/03/22 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
2019/10/24 Python
Python三元运算与lambda表达式实例解析
2019/11/30 Python
python无序链表删除重复项的方法
2020/01/17 Python
Pycharm远程连接服务器并实现代码同步上传更新功能
2020/02/25 Python
pandas数据拼接的实现示例
2020/04/16 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
2021/01/29 Python
海淘零差价,宝贝全球购: 宝贝格子
2016/08/24 全球购物
英国图书音像网站:Hive.co.uk(图书、电子书、DVD、蓝光、音乐CD等)
2017/10/16 全球购物
美国花园雕像和家居装饰网上商店:Design Toscano
2019/03/09 全球购物
会计电算一体化个人简历的自我评价
2013/10/15 职场文书
求职简历自荐信
2013/10/20 职场文书
人民教师的自我评价分享
2014/02/21 职场文书
化工专业求职信
2014/07/01 职场文书
四风问题个人剖析材料
2014/10/07 职场文书
先进工作者申报材料
2014/12/23 职场文书
golang中实现给gif、png、jpeg图片添加文字水印
2021/04/26 Golang
Windows 11要来了?微软文档揭示Win11太阳谷 / Win10有两个不同版本
2021/11/21 数码科技
python字符串拼接.join()和拆分.split()详解
2021/11/23 Python