Python3實現(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 請求的內容,而GET是在HTTP 頭部傳輸?shù)模?/p>
2)POST與GET在HTTP 中傳送的方式不同,GET的參數(shù)是在HTTP 的頭部傳送的,而Post的數(shù)據(jù)則是在HTTP 請求的內容里傳送;
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ù)儲存到客戶端的硬盤或內存,或是從客戶端的硬盤讀取數(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中的內容大多數(shù)經(jīng)過了加密處理,因此一般用戶看來只是一些毫無意義的字母數(shù)字組合,只有服務器的CGI處理程序才知道它們真正的含義。
Python3通過Web網(wǎng)頁圖片下載基本功能點
- 要實現(xiàn)的主要功能點:
- 解析網(wǎng)頁中的圖片鏈接
- 對圖片鏈接進行檢測,如果圖片格式 圖片大小不符合要求,則不下載
- 加入異常處理機制
- 自動文件名提取,從圖片鏈接直接提取文件名
Python3通過Web網(wǎng)頁圖片下載參考代碼:
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)絡文件"+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/" #要抓去的網(wǎng)頁鏈接,默認保存到e盤
WebUrl="http://hi.baidu.com/yuyinxuezi/item/df0b59140a06be27f6625cd4"
main(WebUrl)
以上就是Python3實現(xiàn)Web網(wǎng)頁圖片下載的相關介紹,希望對大家的學習有所幫助。
相關文章
pandas滑動窗口學習筆記(shift, diff, pct_change)
pandas中有3類窗口,分別是滑動窗口rolling?、擴張窗口expanding以及指數(shù)加權窗口ewm,下面就來詳細的介紹一下這三種的用法,感興趣的可以了解一下2024-03-03
關于TensorBoard可視化不顯示數(shù)據(jù)問題No scalar data was&nbs
這篇文章主要介紹了如何解決TensorBoard可視化不顯示數(shù)據(jù)問題No scalar data was found,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09
pandas map(),apply(),applymap()區(qū)別解析
這篇文章主要介紹了pandas map(),apply(),applymap()區(qū)別解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-02-02
python+opencv實現(xiàn)論文插圖局部放大并拼接效果
在做圖像數(shù)據(jù)標注時,很難一次就做到精準標注,如果目標比較小,即使微調也難以做到精準,所以就需要另外一個窗口對標注區(qū)域進行局部放大以方便微調,這篇文章主要給大家介紹了關于python+opencv實現(xiàn)論文插圖局部放大并拼接效果的相關資料,需要的朋友可以參考下2021-10-10

