1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        盤(pán)點(diǎn)Python中urllib庫(kù)和requests庫(kù)區(qū)別

        共 2418字,需瀏覽 5分鐘

         ·

        2021-08-07 05:25

        點(diǎn)擊上方“Go語(yǔ)言進(jìn)階學(xué)習(xí)”,進(jìn)行關(guān)注

        回復(fù)“Go語(yǔ)言”即可獲贈(zèng)從入門(mén)到進(jìn)階共10本電子書(shū)

        忽聞水上琵琶聲,主人忘歸客不發(fā)。

        大家好,我是Go進(jìn)階者。今天給大家分享Python基礎(chǔ)中兩個(gè)網(wǎng)絡(luò)爬蟲(chóng)庫(kù)的區(qū)別。

        一、前言

        在使用Python爬蟲(chóng)時(shí),需要模擬發(fā)起網(wǎng)絡(luò)請(qǐng)求,主要用到的庫(kù)有requests庫(kù)和python內(nèi)置的urllib庫(kù),一般建議使用requests,它是對(duì)urllib的再次封裝。

        那它們兩者有什么區(qū)別 ?


        下面通過(guò)案例詳細(xì)的講解 ,了解他們使用的主要區(qū)別。


        二、urllib庫(kù)

        簡(jiǎn)介:urllib庫(kù)的response對(duì)象是先創(chuàng)建http,request對(duì)象,裝載到reques.urlopen里完成http請(qǐng)求。

        返回的是http,response對(duì)象,實(shí)際上是html屬性。使用.read().decode()解碼后轉(zhuǎn)化成了str字符串類型,decode解碼后中文字符能夠顯示出來(lái)。

        例:

        from urllib import request#請(qǐng)求頭headers = {    "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'}wd = {"wd": "中國(guó)"}url = "http://www.baidu.com/s?"req = request.Request(url, headers=headers)response = request.urlopen(req)print(type(response))print(response)res = response.read().decode()print(type(res))print(res)

        運(yùn)行結(jié)果:

        注意:

        通常爬取網(wǎng)頁(yè),在構(gòu)造http請(qǐng)求的時(shí)候,都需要加上一些額外信息,什么Useragent,cookie等之類的信息,或者添加代理服務(wù)器。往往這些都是一些必要的反爬機(jī)制。


        三、requests庫(kù)

        簡(jiǎn)介requests庫(kù)調(diào)用是requests.get方法傳入url和參數(shù),返回的對(duì)象是Response對(duì)象,打印出來(lái)是顯示響應(yīng)狀態(tài)碼。

        通過(guò).text 方法可以返回是unicode 型的數(shù)據(jù),一般是在網(wǎng)頁(yè)的header中定義的編碼形式,而content返回的是bytes,二級(jí)制型的數(shù)據(jù),還有 .json方法也可以返回json字符串。

        如果想要提取文本就用text,但是如果你想要提取圖片、文件等二進(jìn)制文件,就要用content,當(dāng)然decode之后,中文字符也會(huì)正常顯示。


        requests的優(yōu)勢(shì):Python爬蟲(chóng)時(shí),更建議用requests庫(kù)。因?yàn)閞equests比urllib更為便捷,requests可以直接構(gòu)造get,post請(qǐng)求并發(fā)起,而urllib.request只能先構(gòu)造get,post請(qǐng)求,再發(fā)起。


        例:

        import requests
        headers = { "User-Agent": "Mozilla/5.0 (Linux; U; Android 8.1.0; zh-cn; BLA-AL00 Build/HUAWEIBLA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/8.9 Mobile Safari/537.36"}wd = {"wd": "中國(guó)"}url = "http://www.baidu.com/s?"response = requests.get(url, params=wd, headers=headers)data = response.textdata2 = response.contentprint(response)print(type(response))print(data)print(type(data))print(data2)print(type(data2))print(data2.decode())print(type(data2.decode()))

        運(yùn)行結(jié)果 (可以直接獲取整網(wǎng)頁(yè)的信息,打印控制臺(tái)):


        四、總結(jié)

        1. 本文基于Python基礎(chǔ),主要介紹了urllib庫(kù)和requests庫(kù)的區(qū)別。

        2. 在使用urllib內(nèi)的request模塊時(shí),返回體獲取有效信息和請(qǐng)求體的拼接需要decode和encode后再進(jìn)行裝載。進(jìn)行http請(qǐng)求時(shí)需先構(gòu)造get或者post請(qǐng)求再進(jìn)行調(diào)用,header等頭文件也需先進(jìn)行構(gòu)造。

        3. requests是對(duì)urllib的進(jìn)一步封裝,因此在使用上顯得更加的便捷,建議在實(shí)際應(yīng)用當(dāng)中盡量使用requests。

        4. 希望能給一些對(duì)爬蟲(chóng)感興趣,有一個(gè)具體的概念。方法只是一種工具,試著去爬一爬會(huì)更容易上手,網(wǎng)絡(luò)也會(huì)有很多的坑,做爬蟲(chóng)更需要大量的經(jīng)驗(yàn)來(lái)應(yīng)付復(fù)雜的網(wǎng)絡(luò)情況。

        5. 希望大家一起探討學(xué)習(xí), 一起進(jìn)步。

        ------------------- End -------------------

        往期精彩文章推薦:

        歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

        想加入Go學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群

        萬(wàn)水千山總是情,點(diǎn)個(gè)【在看】行不行

        瀏覽 32
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            欧美天堂五月天 | 性生交大片免费看A片苹果 | 青青青久久网免费观看 | 男女在线观看免费视频 | 俺去啦俺来也 | 免费网站成人 视频在线观看 | 美女又黄又爽网站 | 91女人18片女毛片60分钟 | 亚洲涩88| 成人激一级AV毛片 |