Python3實(shí)現(xiàn)Web網(wǎng)頁(yè)圖片下載
先來介紹一些python web編程基礎(chǔ)知識(shí)
1. GET與POST區(qū)別
1)POST是被設(shè)計(jì)用來向web服務(wù)器上放東西的,而GET是被設(shè)計(jì)用來從服務(wù)器取東西的,GET也能夠向服務(wù)器傳送較少的數(shù)據(jù),而Get之所以也能傳送數(shù)據(jù),只是用來設(shè)計(jì)告訴服務(wù)器,你到底需要什么樣的數(shù)據(jù).POST的信息作為HTTP 請(qǐng)求的內(nèi)容,而GET是在HTTP 頭部傳輸?shù)模?/p>
2)POST與GET在HTTP 中傳送的方式不同,GET的參數(shù)是在HTTP 的頭部傳送的,而Post的數(shù)據(jù)則是在HTTP 請(qǐng)求的內(nèi)容里傳送;
3)POST傳輸數(shù)據(jù)時(shí),不需要在URL中顯示出來,而GET方法要在URL中顯示;
4)GET方法由于受到URL長(zhǎng)度的限制,只能傳遞大約1024字節(jié);POST傳輸?shù)臄?shù)據(jù)量大,可以達(dá)到2M
2. Cookies技術(shù)
Cookies現(xiàn)在經(jīng)常被大家提到,那么到底什么是Cookies,它有什么作用 呢?
Cookies是一種能夠讓網(wǎng)站服務(wù)器把少量數(shù)據(jù)儲(chǔ)存到客戶端的硬盤或內(nèi)存,或是從客戶端的硬盤讀取數(shù)據(jù)的一種技術(shù)。Cookies是當(dāng)你瀏覽某網(wǎng)站 時(shí),由Web服務(wù)器置于你硬盤上的一個(gè)非常小的文本文件,它可以記錄你的用戶ID、密碼、瀏覽過的網(wǎng)頁(yè)、停留的時(shí)間等信息。
當(dāng)你再次來到該網(wǎng)站時(shí),網(wǎng)站通過讀取Cookies,得知你的相關(guān)信息,就可以做出相應(yīng)的動(dòng)作,如在頁(yè)面顯示歡迎你的標(biāo)語,或者讓你不用輸入ID、密碼就直接登錄等等。
從本質(zhì)上講,它可以看作是你的身份證。但Cookies不能作為代碼執(zhí)行,也不會(huì)傳送病毒,且為你所專有,并只能由提供它的服務(wù)器來讀取。
保存的信息片斷以“名/值”對(duì)(name-value pairs)的形式儲(chǔ)存,一個(gè)“名/值”對(duì)僅僅是一條命名的數(shù)據(jù)。
一個(gè)網(wǎng)站只能取得它放在你的電腦中的信息,它無法從其它的Cookies文件中取得信息,也無法得到你的電腦上的其它任何東西。
Cookies中的內(nèi)容大多數(shù)經(jīng)過了加密處理,因此一般用戶看來只是一些毫無意義的字母數(shù)字組合,只有服務(wù)器的CGI處理程序才知道它們真正的含義。
Python3通過Web網(wǎng)頁(yè)圖片下載基本功能點(diǎn)
- 要實(shí)現(xiàn)的主要功能點(diǎn):
- 解析網(wǎng)頁(yè)中的圖片鏈接
- 對(duì)圖片鏈接進(jìn)行檢測(cè),如果圖片格式 圖片大小不符合要求,則不下載
- 加入異常處理機(jī)制
- 自動(dòng)文件名提取,從圖片鏈接直接提取文件名
Python3通過Web網(wǎng)頁(yè)圖片下載參考代碼:
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("訪問網(wǎng)絡(luò)文件"+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個(gè)文件需要下載"%len(filepathlist)) for file in filepathlist: print( file ) print("開始多線程下載") task_threads=[] #存儲(chǔ)線程 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() #等待所有線程結(jié)束 print("線程結(jié)束") 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/" #要抓去的網(wǎng)頁(yè)鏈接,默認(rèn)保存到e盤 WebUrl="http://hi.baidu.com/yuyinxuezi/item/df0b59140a06be27f6625cd4" main(WebUrl)
以上就是Python3實(shí)現(xiàn)Web網(wǎng)頁(yè)圖片下載的相關(guān)介紹,希望對(duì)大家的學(xué)習(xí)有所幫助。
相關(guān)文章
python HTTPX庫(kù)實(shí)現(xiàn)同步異步請(qǐng)求用法示例
這篇文章主要為大家介紹了python HTTPX庫(kù)實(shí)現(xiàn)同步異步請(qǐng)求用法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01Flask項(xiàng)目中實(shí)現(xiàn)短信驗(yàn)證碼和郵箱驗(yàn)證碼功能
這篇文章主要介紹了Flask項(xiàng)目中實(shí)現(xiàn)短信驗(yàn)證碼和郵箱驗(yàn)證碼功能,需本文通過截圖實(shí)例代碼的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下2019-12-12python密碼學(xué)簡(jiǎn)單替代密碼解密及測(cè)試教程
這篇文章主要介紹了python密碼學(xué)簡(jiǎn)單替代密碼解密及測(cè)試教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05解決Python3 被PHP程序調(diào)用執(zhí)行返回亂碼的問題
今天小編就為大家分享一篇解決Python3 被PHP程序調(diào)用執(zhí)行返回亂碼的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-02-02python對(duì)日志進(jìn)行處理的實(shí)例代碼
本篇文章給大家分享了關(guān)于python處理日志的方法以及相關(guān)實(shí)例代碼,有興趣的朋友們學(xué)習(xí)下。2018-10-10python學(xué)習(xí)VSCode使用技巧帶你進(jìn)入高效開發(fā)模式
VsCode是一款開源的編輯器,擁有強(qiáng)大的功能,。由于擁有各種各樣的插件,這就使得VsCode可以做到的事情更多了。在使用的過程中,也是有很多技巧的,掌握一些技巧對(duì)于后期寫代碼也會(huì)輕松很多2021-09-09理解深度學(xué)習(xí)之深度學(xué)習(xí)簡(jiǎn)介
這篇文章主要是關(guān)于深度學(xué)習(xí)的簡(jiǎn)介,對(duì)大家學(xué)習(xí)了解機(jī)器深度學(xué)習(xí)有一定的幫助,以后會(huì)持續(xù)更新本系列,希望能為大家?guī)硪恍┦肇?,讓我們一起來看看下面的文章?/div> 2021-04-04詳解Python計(jì)算機(jī)視覺 圖像扭曲(仿射扭曲)
這篇文章主要介紹了Python計(jì)算機(jī)視覺 圖像扭曲(仿射扭曲),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03最新評(píng)論