这篇文章主要介绍了python3通过request.urlopen实现web网页图片下载,感兴趣的小伙伴们可以参考一下
先来介绍一些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网页图片下载的相关介绍,希望对大家的学习有所帮助。
以上就是利用python3实现web网页图片下载的详细内容,更多请关注 第一php社区 其它相关文章!