App下載

python如何操作網(wǎng)頁(yè)?urllib庫(kù)介紹!

猿友 2021-07-12 10:32:20 瀏覽數(shù) (3076)
反饋

很多小伙伴們?cè)诹私饬伺老x的一個(gè)基礎(chǔ)開發(fā)流程后大概有了一定的思路,想要實(shí)際上手的時(shí)候卻發(fā)現(xiàn)想要獲取網(wǎng)頁(yè)都是一件困難的事情。因?yàn)樵趯W(xué)習(xí)了 python 語(yǔ)言的標(biāo)準(zhǔn)課程中并沒有介紹 python 如何訪問網(wǎng)頁(yè),也沒有介紹哪個(gè)庫(kù)的功能是做這個(gè)的(大部分編程語(yǔ)言類課程不會(huì)過多介紹這個(gè)語(yǔ)言的包,除非這個(gè)包是學(xué)習(xí)必須的)。其實(shí),在 python 中內(nèi)置了一個(gè)模塊專門用于操作網(wǎng)頁(yè) URL,以及對(duì)網(wǎng)頁(yè)的內(nèi)容進(jìn)行一個(gè)簡(jiǎn)單的處理,這個(gè)模塊,叫 urllib 庫(kù)。

介紹

urllib 庫(kù)是一個(gè) python 自帶的用于操作網(wǎng)頁(yè) URL 的庫(kù),它可以簡(jiǎn)單的對(duì)網(wǎng)頁(yè)的內(nèi)容進(jìn)行抓取處理。該功能最常用于 python 爬蟲的開發(fā),不過對(duì)于爬蟲開發(fā)而言,request 是一個(gè)更好的選擇。但內(nèi)置的 urllib 也可以在簡(jiǎn)單使用上替代 request 庫(kù)(而且由于 urllib 庫(kù)是內(nèi)置的,所以并不需要額外安裝)。

安裝

urllib 是 python 內(nèi)置的庫(kù),不需要額外的安裝。

功能

urllib 庫(kù)下有四個(gè)模塊,分別是 request 模塊,error 模塊,parse 模塊和 robotparser 模塊。

  • ?urllib.request?  該模塊定義了一些打開URL的函數(shù)和類,比如發(fā)起請(qǐng)求,授權(quán)驗(yàn)證,重定向,cookie等功能。
對(duì)于爬蟲而言,一般只需要了解?urllib.request?的?urlopen()?方法即可。
? urlopen()? 方法可以選擇傳入如下參數(shù)(不完全,但是基本上是爬蟲常用的參數(shù)):
  • ?url?:url 地址,也就是請(qǐng)求的鏈接。
  • ?data?:發(fā)送到服務(wù)器的數(shù)據(jù)包(使用post方法的時(shí)候),默認(rèn)為None。
  • ?timeout?:設(shè)置訪問超時(shí)時(shí)間。
  • ?headers?:請(qǐng)求頭,這個(gè)字段在爬蟲反反爬的時(shí)候需要用到。
  • ?method?:請(qǐng)求方法,可以設(shè)置請(qǐng)求的方式,默認(rèn)是get請(qǐng)求。
  • 代碼示例:

    url = 'http://m.o2fo.com/'
    headers = { 
    #假裝自己是瀏覽器 
    'User-Agent':' Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36', 
    }
    req = request.Request(url,data=None,headers=headers,method='GET')
    
    • ?urllib.error?  該模塊為?urllib.request?所引發(fā)的異常定義了異常類,用于處理?urllib.request?引起的異常。
    • ?urllib.parse?  該模塊用于解析URL ,它可以解析一個(gè)url的協(xié)議,網(wǎng)絡(luò)位置部分,分層路徑,最后路徑元素的參數(shù),查詢組件,片段識(shí)別,用戶名,密碼,主機(jī)名(小寫)和端口號(hào)(前提是該URL有對(duì)應(yīng)的值)

     一般而言一個(gè)url的結(jié)構(gòu)只要開發(fā)者有一定經(jīng)驗(yàn),可以直接看出上述的內(nèi)容,所以該模塊的作用只是用于自動(dòng)化操作,對(duì)于爬蟲而言作用有限(在最開始的網(wǎng)站分析階段開發(fā)者已經(jīng)將相應(yīng)的工作都做完了),如需了解對(duì)應(yīng)的內(nèi)容,請(qǐng)前往python教程進(jìn)行了解

  • ?urllib.robotparser ?  該模塊用于解析robot文件。
  • robot文件是網(wǎng)站用來告訴爬蟲什么內(nèi)容可以爬什么內(nèi)容不能爬的文件,是網(wǎng)站與爬蟲開發(fā)者之間的君子協(xié)定。雖然沒有明文規(guī)定robot規(guī)定不能爬的內(nèi)容一定不能爬,但是爬取robot規(guī)定不能爬的內(nèi)容對(duì)方可以向開發(fā)者?追責(zé)。?

    小結(jié)

    以上就是關(guān)于 urllib 庫(kù)的全部?jī)?nèi)容介紹了,關(guān)于這個(gè)庫(kù)的類和方法的內(nèi)容還有很多,小編只是挑了里面比較常用的一個(gè)功能進(jìn)行介紹,更多的內(nèi)容可以翻閱官方文檔。W3Cschool后續(xù)也會(huì)整理相關(guān)的手冊(cè)進(jìn)行放出。


    0 人點(diǎn)贊