爬蟲常用庫urllib 註:運行環境為PyCharm urllib是Python3內置的HTTP請求庫 urllib.request:請求模塊 urllib.error:異常處理模塊 urllib.parse:url解析模塊 urllib.robotparse:robot.txt解析模塊 1、url ...
爬蟲常用庫urllib
註:運行環境為PyCharm
urllib是Python3內置的HTTP請求庫
urllib.request:請求模塊
urllib.error:異常處理模塊
urllib.parse:url解析模塊
urllib.robotparse:robot.txt解析模塊
1、urllib.request.urlopen(url, data=None, [timeout]*, cafile=None, cadefault=False,content=None)
url:請求網址
data:請求時需要發送的數據
timeout:超時設置
from urllib import request # 請求獲取網頁返回內容 response = request.urlopen('https://www.toutiao.com/') # 獲取網頁返回內容 print(response.read().decode('utf-8')) # 獲取狀態碼 print(response.status) # 獲取請求頭 print(response.getheaders()) # 對請求頭進行遍歷 for k, v in response.getheaders(): print(k, '=', v)
當爬去一些反爬網站時,需要適當地增加請求頭進行請求要用到Request對象。
2、error.URLError:url的一些問題,這個異常只有一個reason屬性
error.HTTPError:error.URLError的子類,在與上面的混合使用時需要將這個異常放到前面,這個異常是一些請求錯誤,有三個方法,.reason(), .code(), .headers(),在捕捉異常時通常先使用這個
3、urllib.parse.urlparse(url,scheme=‘’,allow_fragments=True)
解析url
from urllib import request, parse # 解析url print(parse.urlparse('https://movie.douban.com/')) print(parse.urlparse('https://movie.douban.com/', scheme='http')) print(parse.urlparse('movie.douban.com/', scheme='http')) 結果: ParseResult(scheme='https', netloc='movie.douban.com', path='/', params='', query='', fragment='') ParseResult(scheme='https', netloc='movie.douban.com', path='/', params='', query='', fragment='') ParseResult(scheme='http', netloc='', path='movie.douban.com/', params='', query='', fragment='')
反解析url
from urllib import parse # 將列表元素拼接成url url = ['http', 'www', 'baidu', 'com', '1554384640', 'f2b8183cd1e469a'] # 這裡至少需要6個元素 print(parse.urlunparse(url)) 結果: http://www/baidu;com?1554384640#f2b8183cd1e469a
參考資料:
1、Python爬蟲常用庫之urllib詳解|日常學python:https://mp.weixin.qq.com/s?src=11×tamp=1554382467&ver=1526&signature=fJepqC9Qswpe2fWjtxmNrUth3gX5vZ0jPBQyzBeqQMhhfbj462b*Jk0WPXYUjXP6dUP63tU8G0HqPV9sDWllrGVr0frRAERQE4fY-6oqE5ZZxUXRnIW508nhNQdnQ*be&new=1