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 开发Activex组件方法
Nov 08 Python
Python简单实现TCP包发送十六进制数据的方法
Apr 16 Python
Python实现PS滤镜特效之扇形变换效果示例
Jan 26 Python
使用Python抓取豆瓣影评数据的方法
Oct 17 Python
Python中正则表达式的用法总结
Feb 22 Python
Flask模板引擎之Jinja2语法介绍
Jun 26 Python
使用Python制作新型冠状病毒实时疫情图
Jan 28 Python
Python流程控制常用工具详解
Feb 24 Python
python 抓取知乎指定回答下视频的方法
Jul 09 Python
python 爬取小说并下载的示例
Dec 07 Python
python实现批量移动文件
Apr 05 Python
python通过函数名调用函数的几种方法总结
Jun 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 fsockopen伪造post与get方法的详解
2013/06/14 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
ASP.NET中AJAX 调用实例代码
2012/05/03 Javascript
js 实现菜单左右滚动显示示例介绍
2013/11/21 Javascript
深入理解javascript变量声明
2014/11/20 Javascript
javascript排序函数实现数字排序
2015/06/26 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
2015/10/26 Javascript
JQuery核心函数是什么及使用方法介绍
2016/05/03 Javascript
JS类的定义与使用方法深入探索
2016/11/26 Javascript
Mac系统下Webstorm快捷键整理大全
2017/05/28 Javascript
微信小程序出现wx.navigateTo页面不跳转问题的解决方法
2017/12/26 Javascript
详解webpack中的hash、chunkhash、contenthash区别
2018/01/05 Javascript
详解Vue文档中几个易忽视部分的剖析
2018/03/24 Javascript
解决vue.js 数据渲染成功仍报错的问题
2018/08/25 Javascript
在vue中使用G2图表的示例代码
2019/03/19 Javascript
通过JQuery,JQueryUI和Jsplumb实现拖拽模块
2019/06/18 jQuery
vue的路由映射问题及解决方案
2019/10/14 Javascript
ZK中使用JS读取客户端txt文件内容问题
2019/11/07 Javascript
python使用PyGame模块播放声音的方法
2015/05/20 Python
Python使用shelve模块实现简单数据存储的方法
2015/05/20 Python
Python smallseg分词用法实例分析
2015/05/28 Python
Python Property属性的2种用法
2015/06/21 Python
Flask框架Flask-Login用法分析
2018/07/23 Python
pandas.dataframe按行索引表达式选取方法
2018/10/30 Python
python消除序列的重复值并保持顺序不变的实例
2018/11/08 Python
python图形工具turtle绘制国际象棋棋盘
2019/05/23 Python
Python实现最常见加密方式详解
2019/07/13 Python
感知器基础原理及python实现过程详解
2019/09/30 Python
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
毕业生简历自我评价范文
2014/04/09 职场文书
自主招生专家推荐信
2015/03/26 职场文书
因工资原因离职的辞职信范文
2015/05/12 职场文书
企业安全生产检查制度
2015/08/06 职场文书
安全学习心得体会范文
2016/01/18 职场文书
KVM基础命令详解
2022/04/30 Servers
Redis全局ID生成器的实现
2022/06/05 Redis