urllib3

u=4012717948,1091859348&fm=173&app=49&f=JPEG.jpg

一.來自官方網(wǎng)站的解釋:

urllib3是一個功能強大磕昼,對SAP 健全的 HTTP客戶端爽蝴。許多Python生態(tài)系統(tǒng)已經(jīng)使用了urllib3蝎亚,你也應(yīng)該這樣做。

二. 安裝urllib3庫

pip install urllib3
不懂的請百度(開個玩笑梅惯,都是基礎(chǔ)怎么可能不會~~~)

通過urllib3訪問一個網(wǎng)頁,那么必須首先構(gòu)造一個PoolManager對象,然后通過PoolMagent中的request方法或者 urlopen()方法來訪問一個網(wǎng)頁劣针,兩者幾乎沒有任何區(qū)別从祝。

class urllib3.poolmanager.PoolManager(num_pools = 10擎浴,headers = None骏融,** connection_pool_kw )

生成一個PoolManager所需要的參數(shù):

參數(shù) 描述
num_pools 代表了緩存的池的個數(shù),如果訪問的個數(shù)大于num_pools误趴,將按順序丟棄最初始的緩存,將緩存的個數(shù)維持在池的大小。
headers 代表了請求頭的信息,如果在初始化PoolManager的時候制定了headers贮缅,那么之后每次使用PoolManager來進(jìn)行訪問的時候,都將使用該headers來進(jìn)行訪問。
** connection_pool_kw 是基于connection_pool 來生成的其它設(shè)置

解釋來自:[https://blog.csdn.net/qq_42415326/article/details/90794150](https://blog.csdn.net/qq_42415326/article/details/90794150)

當(dāng)訪問網(wǎng)頁完成之后昌跌,將會返回一個HTTPResponse對象答恶,可以通過如下的方法來讀取獲取GET請求的響應(yīng)內(nèi)容:

import urllib3
http = urllib3.PoolManager()
resp1 = http.request('GET', 'http://httpbin.org')
print(resp1.status)
print(resp1.data.decode())

三.詳解

構(gòu)造請求(request)

1導(dǎo)入包

import urllib3

2.實例化一個PoolManager對象構(gòu)造請求污呼。

http = urllib3.PoolManager()

3.用request方法發(fā)送一個請求

resp1 = http.request('GET', 'http://httpbin.org')

3.1.用request方法發(fā)送任意一個http請求

resp1 = http.request(
'POST',
 'http://httpbin.org/post',
fields={'hello':'weixin'}
)

四.小案例

這個是自己寫的....很渣渣的感覺

import urllib3
import re
import os
for i in range(1,4):
    #創(chuàng)建空字典苗缩,列表準(zhǔn)備把名字,圖片url裝進(jìn)字典
    dict_img={}
    list_name=[]
    list_img=[]
    # 網(wǎng)址
    url = "http://www.weimeitupian.com/page/{}".format(i)
    http = urllib3.PoolManager()
    r = http.request('GET', url)
    name= re.findall(b'target=.*?title="(.*?)"',r.data,re.S)
    # 將標(biāo)題丟進(jìn)列表
    for i in name:
        i=i.decode()
        list_name.append(i)
    img_url = re.findall(b'<div class="postlist">.*?<img src="(.*?)".*?alt=.*?</div>',r.data,re.S)
    # 將圖片url丟進(jìn)列表
    for i in img_url:
        i=i.decode()
        list_img.append(i)
    #合成字典
    dict_img=dict(zip(list_name,list_img))
    # print(dict_img)
    #圖片url的請求前面部分
    head = 'http://www.weimeitupian.com'

    for key in dict_img:
        # print(dict_img[key])
        # 判斷是否需要加圖片url的請求前面部分
        if head in dict_img[key]:
            url = dict_img[key]
        else:
            url='http://www.weimeitupian.com'.format(dict_img[key])

        #判斷圖片格式
        if dict_img[key][-4:] == '.jpg' or dict_img[key][-4:] =='jpeg':
            geshi ='jpg'
        elif dict_img[key][-4:] =='.gif':
            geshi ='gif'
        elif dict_img[key][-4:] =='.png':
            geshi = 'png'

        ##構(gòu)造請求數(shù)據(jù)
        image = http.request('GET', url)
        data = image.data

        ##嘗試寫入
        try:
            os.mkdir('{}'.format(key))
        except FileExistsError as e:
            print(e,':文件夾已存在')
        with open('{0}\\{0}.{1}'.format(key,geshi),'wb+')as f:
            f.write(data)
print('done!')

再看一下大佬寫的......

import os
import re
import time
import urllib3
from threading import Thread



def image_request(url,item,image_path):
    # 對圖片進(jìn)行請求
    print('正在請求{}'.format(url))
    image_content = req.request('GET', url)  # 網(wǎng)絡(luò)io請求
    # 文件寫入圖片
    print('開始寫入圖片')
    # with open('{}/{}'.format(image_path, item[0].split('/')[-1]), 'wb') as f:
    #     f.write(image_content.data)


def save_images(items):
    t_list = []
    for item in items:
        if not item[0]:
            continue
        # 構(gòu)造圖片存儲路徑
        image_path = './images/{}'.format(item[1])
        # 判斷文件夾是否存在膏萧,不存在就創(chuàng)建
        if not os.path.exists(image_path):
            os.mkdir(image_path)
        # 判斷圖片url地址是否包含域名
        image_url = item[0]
        if not 'http' in item[0]:
            image_url = '{}{}'.format('http://www.weimeitupian.com',item[0])

        # 創(chuàng)建線程實例
        t = Thread(target=image_request,args=(image_url,item,image_path))
        # 啟動線程
        # t.start()
        # t.join()
    #
        t_list.append(t)

    for t in t_list:
        t.start()
    for t in t_list:
        t.join()

if __name__ == '__main__':
    req = urllib3.PoolManager()
    start_time = time.time()
    for page in range(1,2):
        print('正在下載第{}頁的圖片數(shù)據(jù)...'.format(page))
        data = req.request('GET','http://www.weimeitupian.com/page/{}'.format(page))
        # 通過正則表達(dá)式 匹配標(biāo)題和圖片地址
        items = re.findall(r'</a></div>-->.*?<img src="(.*?)" alt="(.*?)" class="thumb" />',data.data.decode(),re.S)
        save_images(items)
    print('耗時:{}秒'.format(time.time()-start_time))

真的是沒有對比就沒有傷害......看來自己的路還長著呢......加油~~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蝌衔,一起剝皮案震驚了整個濱河市榛泛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌噩斟,老刑警劉巖曹锨,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異剃允,居然都是意外死亡沛简,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門斥废,熙熙樓的掌柜王于貴愁眉苦臉地迎上來椒楣,“玉大人,你說我怎么就攤上這事牡肉∨趸遥” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵统锤,是天一觀的道長毛俏。 經(jīng)常有香客問我炭庙,道長,這世上最難降的妖魔是什么煌寇? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任焕蹄,我火速辦了婚禮,結(jié)果婚禮上阀溶,老公的妹妹穿的比我還像新娘腻脏。我一直安慰自己,他們只是感情好银锻,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布迹卢。 她就那樣靜靜地躺著,像睡著了一般徒仓。 火紅的嫁衣襯著肌膚如雪腐碱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天掉弛,我揣著相機與錄音症见,去河邊找鬼。 笑死殃饿,一個胖子當(dāng)著我的面吹牛谋作,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播乎芳,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼遵蚜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了奈惑?” 一聲冷哼從身側(cè)響起吭净,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎肴甸,沒想到半個月后寂殉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡原在,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年友扰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庶柿。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡村怪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出浮庐,到底是詐尸還是另有隱情甚负,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站腊敲,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏维苔。R本人自食惡果不足惜碰辅,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望介时。 院中可真熱鬧没宾,春花似錦、人聲如沸沸柔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽褐澎。三九已至会钝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間工三,已是汗流浹背迁酸。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留俭正,地道東北人奸鬓。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像掸读,于是被迫代替她去往敵國和親串远。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容