国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python3實現(xiàn)Web網(wǎng)頁圖片下載

2020-01-04 17:47:46
字體:
來源:轉載
供稿:網(wǎng)友
這篇文章主要介紹了Python3通過request.urlopen實現(xiàn)Web網(wǎng)頁圖片下載,感興趣的小伙伴們可以參考一下
 

先來介紹一些python web編程基礎知識

1. GET與POST區(qū)別

1)POST是被設計用來向web服務器上放東西的,而GET是被設計用來從服務器取東西的,GET也能夠向服務器傳送較少的數(shù)據(jù),而Get之所以也能傳送數(shù)據(jù),只是用來設計告訴服務器,你到底需要什么樣的數(shù)據(jù).POST的信息作為HTTP 請求的內(nèi)容,而GET是在HTTP 頭部傳輸?shù)模?/p>

2)POST與GET在HTTP 中傳送的方式不同,GET的參數(shù)是在HTTP 的頭部傳送的,而Post的數(shù)據(jù)則是在HTTP 請求的內(nèi)容里傳送;

3)POST傳輸數(shù)據(jù)時,不需要在URL中顯示出來,而GET方法要在URL中顯示;

4)GET方法由于受到URL長度的限制,只能傳遞大約1024字節(jié);POST傳輸?shù)臄?shù)據(jù)量大,可以達到2M

2. Cookies技術

Cookies現(xiàn)在經(jīng)常被大家提到,那么到底什么是Cookies,它有什么作用 呢?

Cookies是一種能夠讓網(wǎng)站服務器把少量數(shù)據(jù)儲存到客戶端的硬盤或內(nèi)存,或是從客戶端的硬盤讀取數(shù)據(jù)的一種技術。Cookies是當你瀏覽某網(wǎng)站 時,由Web服務器置于你硬盤上的一個非常小的文本文件,它可以記錄你的用戶ID、密碼、瀏覽過的網(wǎng)頁、停留的時間等信息。

當你再次來到該網(wǎng)站時,網(wǎng)站通過讀取Cookies,得知你的相關信息,就可以做出相應的動作,如在頁面顯示歡迎你的標語,或者讓你不用輸入ID、密碼就直接登錄等等。

從本質上講,它可以看作是你的身份證。但Cookies不能作為代碼執(zhí)行,也不會傳送病毒,且為你所專有,并只能由提供它的服務器來讀取。

保存的信息片斷以“名/值”對(name-value pairs)的形式儲存,一個“名/值”對僅僅是一條命名的數(shù)據(jù)。

一個網(wǎng)站只能取得它放在你的電腦中的信息,它無法從其它的Cookies文件中取得信息,也無法得到你的電腦上的其它任何東西。

Cookies中的內(nèi)容大多數(shù)經(jīng)過了加密處理,因此一般用戶看來只是一些毫無意義的字母數(shù)字組合,只有服務器的CGI處理程序才知道它們真正的含義。

Python3通過Web網(wǎng)頁圖片下載基本功能點

  • 要實現(xiàn)的主要功能點:
  • 解析網(wǎng)頁中的圖片鏈接
  • 對圖片鏈接進行檢測,如果圖片格式 圖片大小不符合要求,則不下載
  • 加入異常處理機制
  • 自動文件名提取,從圖片鏈接直接提取文件名

Python3通過Web網(wǎng)頁圖片下載參考代碼:

from urllib import requestimport threadingfrom time import sleep,ctimefrom html import parserdef downjpg( filepath,FileName ="default.jpg" ): try:  web = request.urlopen( filepath)  print("訪問網(wǎng)絡文件"+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")  returndef 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.filelistdef 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)頁鏈接,默認保存到e盤WebUrl="http://hi.baidu.com/yuyinxuezi/item/df0b59140a06be27f6625cd4"main(WebUrl)

以上就是Python3實現(xiàn)Web網(wǎng)頁圖片下載的相關介紹,希望對大家的學習有所幫助。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 沙田区| 老河口市| 三亚市| 分宜县| 驻马店市| 开封县| 渑池县| 庆云县| 兰考县| 新野县| 城固县| 望城县| 平山县| 宝兴县| 邵武市| 乌什县| 临清市| 徐州市| 汶上县| 扬中市| 犍为县| 务川| 灵武市| 张家口市| 钟祥市| 林周县| 霍州市| 临澧县| 涪陵区| 哈巴河县| 台江县| 衡阳县| 安达市| 沾化县| 锡林浩特市| 临沧市| 新河县| 盐城市| 秭归县| 长汀县| 安吉县|