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 相关文章推荐
python3图片转换二进制存入mysql
Dec 06 Python
Python的函数的一些高阶特性
Apr 27 Python
Python输出PowerPoint(ppt)文件中全部文字信息的方法
Apr 28 Python
Python实现股市信息下载的方法
Jun 15 Python
TensorFlow搭建神经网络最佳实践
Mar 09 Python
Python爬虫实现全国失信被执行人名单查询功能示例
May 03 Python
python提取图像的名字*.jpg到txt文本的方法
May 10 Python
Python实现的排列组合、破解密码算法示例
Apr 12 Python
python tkinter canvas 显示图片的示例
Jun 13 Python
Python利用PyExecJS库执行JS函数的案例分析
Dec 18 Python
如何提高python 中for循环的效率
Apr 15 Python
python中__slots__节约内存的具体做法
Jul 04 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中的函数嵌套层数限制分析
2011/06/13 PHP
PHP中SESSION过期设置
2021/03/09 PHP
MSN消息提示类
2006/09/05 Javascript
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
JQuery之拖拽插件实现代码
2011/04/14 Javascript
编写自己的jQuery插件简单实现代码
2011/04/19 Javascript
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
2014/04/08 Javascript
JavaScript实现的使用键盘控制人物走动实例
2014/08/27 Javascript
关于JS中prototype的理解
2015/09/07 Javascript
Javascript字符串拼接小技巧(推荐)
2016/06/02 Javascript
JQuery通过后台获取数据遍历到前台的方法
2018/08/13 jQuery
Element-UI踩坑之Pagination组件的使用
2018/10/29 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
2020/07/17 Javascript
[16:21]教你分分钟做大人:圣堂刺客
2014/12/03 DOTA
自己使用总结Python程序代码片段
2015/06/02 Python
Python松散正则表达式用法分析
2016/04/29 Python
全面了解Nginx, WSGI, Flask之间的关系
2018/01/09 Python
基于python3 OpenCV3实现静态图片人脸识别
2018/05/25 Python
Python基于多线程实现ping扫描功能示例
2018/07/23 Python
在Python运行时动态查看进程内部信息的方法
2019/02/22 Python
使用python socket分发大文件的实现方法
2019/07/08 Python
Django框架HttpResponse对象用法实例分析
2019/11/01 Python
python 的topk算法实例
2020/04/02 Python
CSS3实现的闪烁跳跃进度条示例(附源码)
2013/08/19 HTML / CSS
canvas实现二维码和图片合成的示例代码
2018/08/01 HTML / CSS
美国第一香水网站:Perfume.com
2017/01/23 全球购物
加拿大拼图大师:Puzzle Master
2020/12/28 全球购物
关于Assembly命名空间的三个面试题
2015/07/23 面试题
六查六看六改心得体会
2014/10/14 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
兵马俑导游词
2015/02/02 职场文书
家长意见和建议怎么写
2015/06/04 职场文书
大学自主招生自荐信(2016精选篇)
2016/01/28 职场文书
《植树问题》教学反思
2016/03/03 职场文书