国产睡熟迷奷白丝护士系列精品,中文色字幕网站,免费h网站在线观看的,亚洲开心激情在线

      <sup id="hb9fh"></sup>
          1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

            手機站
            千鋒教育

            千鋒學習站 | 隨時隨地免費學

            千鋒教育

            掃一掃進入千鋒手機站

            領(lǐng)取全套視頻
            千鋒教育

            關(guān)注千鋒學習站小程序
            隨時隨地免費學習課程

            當前位置:首頁  >  技術(shù)干貨  > Python爬蟲庫urllib使用詳解!

            Python爬蟲庫urllib使用詳解!

            來源:千鋒教育
            發(fā)布人:wjy
            時間: 2023-01-10 10:06:00 1673316360

              Python爬蟲庫urllib使用詳解!

              一、Python urllib庫

              Python urllib 庫用于操作網(wǎng)頁 URL,并對網(wǎng)頁的內(nèi)容進行抓取處理。

              Python3 的 urllib。

              urllib 包 包含以下幾個模塊:

              ●urllib.request - 打開和讀取 URL。

              ●urllib.error - 包含 urllib.request 拋出的異常。

              ●urllib.parse - 解析 URL。

              ●urllib.robotparser - 解析 robots.txt 文件。

              二、urllib.request模塊

              urllib.request 定義了一些打開 URL 的函數(shù)和類,包含授權(quán)驗證、重定向、瀏覽器 cookies等。

              urllib.request 可以模擬瀏覽器的一個請求發(fā)起過程。

              這里主要介紹兩個常用方法,urlopen和Request。

              1.urlopen函數(shù)

              語法格式如下:

            Python爬蟲庫urllib使用詳解1

              url:url 地址。

              data:發(fā)送到服務(wù)器的其他數(shù)據(jù)對象,默認為 None。

              timeout:設(shè)置訪問超時時間。

              cafile 和 capath:cafile 為 CA 證書, capath 為 CA 證書的路徑,使用 HTTPS 需要用到。

              cadefault:已經(jīng)被棄用。

              context:ssl.SSLContext類型,用來指定 SSL 設(shè)置。

              示例:

            Python爬蟲庫urllib使用詳解2

              運行結(jié)果:

            Python爬蟲庫urllib使用詳解3

              response對象是http.client. HTTPResponse類型,主要包含 read、readinto、getheader、getheaders、fileno 等方法,以及 msg、version、status、reason、debuglevel、closed 等屬性。

              常用方法:

              read():是讀取整個網(wǎng)頁內(nèi)容,也可以指定讀取的長度,如read(300)。獲取到的是二進制的亂碼,所以需要用到decode()命令將網(wǎng)頁的信息進行解碼。

              readline() - 讀取文件的一行內(nèi)容。

              readlines() - 讀取文件的全部內(nèi)容,它會把讀取的內(nèi)容賦值給一個列表變量。

              info():返回HTTPMessage對象,表示遠程服務(wù)器返回的頭信息。

              getcode():返回Http狀態(tài)碼。如果是http請求,200請求成功完成;404網(wǎng)址未找到。

              geturl():返回請求的url。

              2、Request類

              我們抓取網(wǎng)頁一般需要對 headers(網(wǎng)頁頭信息)進行模擬,否則網(wǎng)頁很容易判定程序為爬蟲,從而禁止訪問。這時候需要使用到 urllib.request.Request 類:

            Python爬蟲庫urllib使用詳解4

              url:url 地址。

              data:發(fā)送到服務(wù)器的其他數(shù)據(jù)對象,默認為 None。

              headers:HTTP 請求的頭部信息,字典格式。

              origin_req_host:請求的主機地址,IP 或域名。

              unverifiable:很少用整個參數(shù),用于設(shè)置網(wǎng)頁是否需要驗證,默認是False。。

              method:請求方法, 如 GET、POST、DELETE、PUT等。

              示例:

            Python爬蟲庫urllib使用詳解5

              三、urllib.error模塊

              urllib.error 模塊為 urllib.request 所引發(fā)的異常定義了異常類,基礎(chǔ)異常類是 URLError。

              urllib.error 包含了兩個方法,URLError 和 HTTPError。

              URLError 是 OSError 的一個子類,用于處理程序在遇到問題時會引發(fā)此異常(或其派生的異常),包含的屬性 reason 為引發(fā)異常的原因。

              HTTPError 是 URLError 的一個子類,用于處理特殊 HTTP 錯誤例如作為認證請求的時候,包含的屬性 code 為 HTTP 的狀態(tài)碼, reason 為引發(fā)異常的原因,headers 為導致 HTTPError 的特定 HTTP 請求的 HTTP 響應頭。

              區(qū)別:

              URLError封裝的錯誤信息一般是由網(wǎng)絡(luò)引起的,包括url錯誤。

              HTTPError封裝的錯誤信息一般是服務(wù)器返回了錯誤狀態(tài)碼。

              關(guān)系:

              URLError是OSERROR的子類,HTTPError是URLError的子類。

              1.URLError 示例

            Python爬蟲庫urllib使用詳解6

              返回結(jié)果:

            Python爬蟲庫urllib使用詳解7

              reason:

              此錯誤的原因。它可以是一個消息字符串或另一個異常實例。

              2.HTTPError示例

            Python爬蟲庫urllib使用詳解8

              返回結(jié)果:

            Python爬蟲庫urllib使用詳解9

              code

              一個 HTTP 狀態(tài)碼,具體定義見 RFC 2616。這個數(shù)字的值對應于存放在

              http.server.BaseHTTPRequestHandler.responses 代碼字典中的某個值。

              reason

              這通常是一個解釋本次錯誤原因的字符串。

              headers

              導致 HTTPError 的特定 HTTP 請求的 HTTP 響應頭。

              3.URLError和HTTPError混合使用

              注意:由于HTTPError是URLError的子類,所以捕獲的時候HTTPError要放在URLError的上面。

              示例:

            Python爬蟲庫urllib使用詳解10

              如果不用上面的方法,可以直接用判斷的形式。

            Python爬蟲庫urllib使用詳解11

              執(zhí)行結(jié)果:

            Python爬蟲庫urllib使用詳解12

              四、urllib.parse模塊

              模塊定義的函數(shù)可分為兩個主要門類: URL 解析和 URL 轉(zhuǎn)碼。

              4.1 URL 解析

              4.1.1 urlparse()

              urllib.parse 用于解析 URL,格式如下:

            Python爬蟲庫urllib使用詳解13

              urlstring 為 字符串的 url 地址,scheme 為協(xié)議類型。

              allow_fragments 參數(shù)為 false,則無法識別片段標識符。相反,它們被解析為路徑,參數(shù)或查詢組件的一部分,并 fragment 在返回值中設(shè)置為空字符串。

              標準鏈接格式為:

            Python爬蟲庫urllib使用詳解14

              對象中包含了六個元素,分別為:協(xié)議(scheme)、域名(netloc)、路徑(path)、路徑參數(shù)(params)、查詢參數(shù)(query)、片段(fragment)。

              示例:

            Python爬蟲庫urllib使用詳解15

              執(zhí)行結(jié)果:

            Python爬蟲庫urllib使用詳解16

              以上還可以通過索引獲取,如通過

            Python爬蟲庫urllib使用詳解17

              4.1.2 urlunparse()

              urlunparse()可以實現(xiàn)URL的構(gòu)造。(構(gòu)造URL)

              urlunparse()接收一個是一個長度為6的可迭代對象,將URL的多個部分組合為一個URL。若可迭代對象長度不等于6,則拋出異常。

              示例:

            Python爬蟲庫urllib使用詳解18

              結(jié)果:

            Python爬蟲庫urllib使用詳解19

              4.1.3 urlsplit()

              urlsplit() 函數(shù)也能對 URL 進行拆分,所不同的是, urlsplit() 并不會把 路徑參數(shù)(params) 從 路徑(path) 中分離出來。

              當 URL 中路徑部分包含多個參數(shù)時,使用 urlparse() 解析是有問題的,這時可以使用 urlsplit() 來解析.

              4.1.4 urlsplit()

              urlunsplit()與 urlunparse()類似,(構(gòu)造URL),傳入對象必須是可迭代對象,且長度必須是5。

              示例:

            Python爬蟲庫urllib使用詳解20

              結(jié)果:

            Python爬蟲庫urllib使用詳解21

              4.1.5 urljoin()

              同樣可以構(gòu)造URL。

              傳遞一個基礎(chǔ)鏈接,根據(jù)基礎(chǔ)鏈接可以將某一個不完整的鏈接拼接為一個完整鏈接.

              注:連接兩個參數(shù)的url, 將第二個參數(shù)中缺的部分用第一個參數(shù)的補齊,如果第二個有完整的路徑,則以第二個為主。

              4.2 URL 轉(zhuǎn)碼

              python中提供urllib.parse模塊用來編碼和解碼,分別是urlencode()與unquote()。

              4.2.1 編碼quote(string)

              URL 轉(zhuǎn)碼函數(shù)的功能是接收程序數(shù)據(jù)并通過對特殊字符進行轉(zhuǎn)碼并正確編碼非 ASCII 文本來將其轉(zhuǎn)為可以安全地用作 URL 組成部分的形式。它們還支持逆轉(zhuǎn)此操作以便從作為 URL 組成部分的內(nèi)容中重建原始數(shù)據(jù),如果上述的 URL 解析函數(shù)還未覆蓋此功能的話

              語法:

            Python爬蟲庫urllib使用詳解22

              使用 %xx 轉(zhuǎn)義符替換 string 中的特殊字符。字母、數(shù)字和 '_.-~' 等字符一定不會被轉(zhuǎn)碼。在默認情況下,此函數(shù)只對 URL 的路徑部分進行轉(zhuǎn)碼??蛇x的 safe 形參額外指定不應被轉(zhuǎn)碼的 ASCII 字符 --- 其默認值為 '/'。

              string 可以是 str 或 bytes 對象。

              示例:

            Python爬蟲庫urllib使用詳解23

              執(zhí)行結(jié)果:

            Python爬蟲庫urllib使用詳解24

              4.2.2 編碼urlencode()

              quote()只能對字符串編碼,而urlencode()可以對查詢字符串進行編碼。

            Python爬蟲庫urllib使用詳解25

              結(jié)果:

            Python爬蟲庫urllib使用詳解26

              4.2.3 解碼unquote(string)

              解碼就是對編碼后的url進行還原。

              示例:

            Python爬蟲庫urllib使用詳解27

              執(zhí)行結(jié)果:

            Python爬蟲庫urllib使用詳解28

              五、urllib.robotparser模塊

              (在網(wǎng)絡(luò)爬蟲中基本不會用到,使用較少,僅作了解)

              urllib.robotparser 用于解析 robots.txt 文件。

              robots.txt(統(tǒng)一小寫)是一種存放于網(wǎng)站根目錄下的 robots 協(xié)議,它通常用于告訴搜索引擎對網(wǎng)站的抓取規(guī)則。

              Robots協(xié)議也稱作爬蟲協(xié)議,機器人協(xié)議,網(wǎng)絡(luò)爬蟲排除協(xié)議,用來告訴爬蟲哪些頁面是可以爬取的,哪些頁面是不可爬取的。它通常是一個robots.txt的文本文件,一般放在網(wǎng)站的根目錄上。

              當爬蟲訪問一個站點的時候,會首先檢查這個站點目錄是否存在robots.txt文件,如果存在,搜索爬蟲會根據(jù)其中定義的爬取范圍進行爬取。如果沒有找到這個文件,搜索爬蟲會訪問所有可直接訪問的頁面。

              urllib.robotparser 提供了 RobotFileParser 類,語法如下:

            Python爬蟲庫urllib使用詳解29

              這個類提供了一些可以讀取、解析 robots.txt 文件的方法:

              set_url(url) - 設(shè)置 robots.txt 文件的 URL。

              read() - 讀取 robots.txt URL 并將其輸入解析器。

              parse(lines) - 解析行參數(shù)。

              can_fetch(useragent, url) - 如果允許 useragent 按照被解析 robots.txt 文件中的規(guī)則來獲取 url 則返回 True。

              mtime() -返回最近一次獲取 robots.txt 文件的時間。這適用于需要定期檢查 robots.txt 文件更新情況的長時間運行的網(wǎng)頁爬蟲。

              modified() - 將最近一次獲取 robots.txt 文件的時間設(shè)置為當前時間。

              crawl_delay(useragent) -為指定的 useragent 從 robots.txt 返回 Crawl-delay 形參。如果此形參不存在或不適用于指定的 useragent 或者此形參的 robots.txt 條目存在語法錯誤,則返回 None。

              request_rate(useragent) -以 named tuple RequestRate(requests, seconds) 的形式從 robots.txt 返回 Request-rate 形參的內(nèi)容。如果此形參不存在或不適用于指定的 useragent 或者此形參的 robots.txt 條目存在語法錯誤,則返回 None。

              site_maps() - 以 list() 的形式從 robots.txt 返回 Sitemap 形參的內(nèi)容。如果此形參不存在或者此形參的 robots.txt 條目存在語法錯誤,則返回 None。

            tags:
            聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
            10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
            請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
            免費領(lǐng)取
            今日已有369人領(lǐng)取成功
            劉同學 138****2860 剛剛成功領(lǐng)取
            王同學 131****2015 剛剛成功領(lǐng)取
            張同學 133****4652 剛剛成功領(lǐng)取
            李同學 135****8607 剛剛成功領(lǐng)取
            楊同學 132****5667 剛剛成功領(lǐng)取
            岳同學 134****6652 剛剛成功領(lǐng)取
            梁同學 157****2950 剛剛成功領(lǐng)取
            劉同學 189****1015 剛剛成功領(lǐng)取
            張同學 155****4678 剛剛成功領(lǐng)取
            鄒同學 139****2907 剛剛成功領(lǐng)取
            董同學 138****2867 剛剛成功領(lǐng)取
            周同學 136****3602 剛剛成功領(lǐng)取
            相關(guān)推薦HOT
            適合三農(nóng)領(lǐng)域的名字?有何技巧?

            現(xiàn)在在抖音上很多博主會選擇直播來賺取更多的流量以及利潤,直播間的東西也有很多讓消費者信任并且喜歡的,而且隨著越來越多人直播,很多農(nóng)產(chǎn)品...詳情>>

            2023-09-19 07:06:05
            抖店商品發(fā)布違規(guī)怎么申訴?有何規(guī)則?

            抖店服務(wù)市場服務(wù)商發(fā)布違禁信息如何處理?情節(jié)嚴重程度判定原則:違規(guī)嚴重等級主要通過服務(wù)商違規(guī)次數(shù)、造成后果的嚴重程度、獲利或?qū)е聯(lián)p失的...詳情>>

            2023-09-19 06:59:55
            “泛垂直起號”可能是2023年最高效的起號方式

            這可能是明年最好用的旗號方式了,今天教大家一個很野,但是可以讓你三天漲1000粉的偏方。去年前年啊,每個人都教你,誰知七號對著自己的產(chǎn)品拍...詳情>>

            2023-09-19 06:37:38
            做直播怎么賣自己的貨怎么上鏈接?能賺錢嗎?

            直播賣貨是時下非?;鸬囊粋€行業(yè),我們的產(chǎn)品可以放到網(wǎng)上賣,也可以在網(wǎng)上做直播?,F(xiàn)在的直播平臺也是很多的,基本不愁沒有銷路。如果想要賣自...詳情>>

            2023-09-19 06:28:26
            比較適合新手的3個不用出境的領(lǐng)域

            隨著短視頻行業(yè)盛勢發(fā)展,越來越多的年輕人也想要投入這行,但又苦于不想出鏡。抖音短視頻 for Android V24.8.0 安卓手機版類型:影音播放大小...詳情>>

            2023-09-19 06:06:39
            開班信息
            北京校區(qū)
            • 北京校區(qū)
            • 大連校區(qū)
            • 廣州校區(qū)
            • 成都校區(qū)
            • 杭州校區(qū)
            • 長沙校區(qū)
            • 合肥校區(qū)
            • 南京校區(qū)
            • 上海校區(qū)
            • 深圳校區(qū)
            • 武漢校區(qū)
            • 鄭州校區(qū)
            • 西安校區(qū)
            • 青島校區(qū)
            • 重慶校區(qū)
            • 太原校區(qū)
            • 沈陽校區(qū)
            • 南昌校區(qū)
            • 哈爾濱校區(qū)