Urllib
官方文檔地址:https://docs.python.org/3/library/urllib.html
urllib提供了一系列用于操作URL的功能。
本文主要介紹的是關于python urllib庫常用方法用法的相關內(nèi)容,下面話不多說了,來一起看看詳細的介紹吧
1、讀取cookies
import http.cookiejar as cj,urllib.request as requestcookie = cj.CookieJar()handler = request.HTTPCookieProcessor(cookie)opener = request.build_opener(handler)response = opener.open('http://www.bigdata17.com')for item in cookie: print(item.name + "=" + item.value)
2、將cookies保存在文件中
filename = 'baidu_cookies.txt'cookies = cj.MozillaCookieJar(filename)handler = request.HTTPCookieProcessor(cookies)opener = request.build_opener(handler)response = opener.open('http://www.baidu.com')cookies.save(ignore_discard=True,ignore_expires=True)
3、處理異常
URLError和HTTPError類,兩個類是父子關系,HTTPError會返回錯誤代碼,兩個類都可以處理request模塊產(chǎn)生的異常,這兩個都有一個reason屬性,用于記錄出現(xiàn)異常的原因
URLError處理異常:
from urllib import request,errortry: response = request.urlopen('http://www.bigdata17.com/index.htm')except error.URLError as e: print(e.reason)
HTTPError處理異常:
這個類是專門處理http請求的異常,http請求會返回一個請求代碼,因此HTTPError會有一個code屬性。另外HTTP請求會有包含請求頭信息,所以HTTPError還包含一個headers屬性。HTTPError繼承自URLError類,因此也包含有reason屬性。
代碼:
try: response = request.urlopen('http://www.bigdata17.com/index.htm')except error.HTTPError as e: print(e.reason) print(e.code) print(e.headers)
4、解析鏈接
urllib庫中的parse類提供了很多用于解析鏈接的方法。
urlparse()方法是專門用于解析鏈接的,我們先看這個方法的返回值:
from urllib.parse import urlparseresult = urlparse('http://www.bigdata17.com')print(result)
上面的代碼返回的結果:
ParseResult(scheme='http', netloc='www.bigdata17.com', path='', params='', query='', fragment='')
可見urlparse()方法返回的是ParseResult類,這個了有6個屬性,分別是scheme、netloc、path、params、query和fragment。其中scheme代表的是協(xié)議,有http,https,ftp等協(xié)議類型。netloc是網(wǎng)站域名,path是要訪問的網(wǎng)頁名稱。params是代表參數(shù)。query查詢參數(shù),fragment是錨點。
urlparse()方法是如何將一個鏈接映射到上面的6個參數(shù)中呢?
繼續(xù)看下一段代碼:
from urllib.parse import urlparseresult = urlparse('http://www.bigdata17.com/22.html;user=bigdata17?id=10#content')print(result)
新聞熱點
疑難解答