(一) URL地址 URL地址組件 URL組件 說明 scheme 網路協議或下載方案 net_loc 伺服器所在地(也許含有用戶信息) path 使用(/)分割的文件或CGI應用的路徑 params 可選參數 query 連接符(&)分割的一系列鍵值對 fragment 指定文檔內特定錨的部分 n ...
(一) URL地址
URL地址組件
URL組件 |
說明 |
scheme |
網路協議或下載方案 |
net_loc |
伺服器所在地(也許含有用戶信息) |
path |
使用(/)分割的文件或CGI應用的路徑 |
params |
可選參數 |
query |
連接符(&)分割的一系列鍵值對 |
fragment |
指定文檔內特定錨的部分 |
net_loc組件
user:password@host:port
組件 |
說明 |
user |
用戶名或登錄 |
password |
用戶密碼 |
host |
運行web伺服器的電腦名稱或地址(必需) |
port |
埠號(如果不是預設的80) |
(二) urllib
這裡主要說明urllib.request和urllib.parse.
(三) urllib.request
urllib.request
組件 |
說明 |
urlopen(url,data=None) |
打開URL鏈接,並返回一個文件類型對象,就像open用二進位只讀方式在本地打開了一個文件一樣。 url:可以是url字元串,也可以是請求對象 data:url是post請求時,可以指定要傳的數據 |
urlretrieve(url,filename=None) |
下載url中的文件 filename:文件名及路徑(沒有指定路徑則存放到當前工作目錄下) |
urlopen對象方法
組件 |
說明 |
read() |
讀取所有數據 |
readline() |
讀取一行數據 |
readlines() |
讀取所有行,作為列表返回 |
fileno() |
返迴文件句柄 |
close() |
關閉url連接(close及上面4個方法和open的同名方法是一樣的) |
info() |
返回MIME(多目標網際網路郵件擴展)頭文件。這個頭文件通知瀏覽器返回的文件類型、以及可用哪類應用程式打開。 |
geturl() |
返回真正的url(例如如果出現重定向,就可以從最終打開的文件中獲得真正的url) |
getcode() |
返回HTTP狀態碼 |
1 import urllib.request 2 url = 'https://tieba.baidu.com/p/5475267611' 3 #打開url(就像用open二進位只讀方式打開一個文件一樣),使用read讀取所有數據 4 html = urllib.request.urlopen(url).read() 5 print(type(html)) 6 7 url_file = 'https://imgsa.baidu.com/forum/w%3D580/sign=99114e38abec08fa260013af69ef3d4d/e549b13533fa828bc80c7764f61f4134960a5a85.jpg' 8 #下載url中的文件並保存 9 urllib.request.urlretrieve(url_file,'C:\Temp\\1.jpg') 10 11 #返回MIEM頭文件 12 html_info = urllib.request.urlopen(url).info() 13 print(html_info)
(四) urlib.parse
urlib.parse
函數 |
說明 |
urlparse(urlstr) |
將url解析為一個元組(scheme='', netloc='', path='', params='', query='', fragment='') |
urlunparse(urltup) |
和urlparse相反,將url組件(一個元組)拼接為完整的url |
urljoin(base,url) |
將base的根功能變數名稱和url拼接為一個完整的url base:函數會自動截取net_loc及前面的所有內容 |
1 import urllib.parse 2 3 url = 'https://www.cnblogs.com/cate/python/' 4 newurl = '/cate/ruby/' 5 #將url解析為一個元組(scheme='', netloc='', path='', params='', query='', fragment='') 6 urlpar = urllib.parse.urlparse(url) 7 print('urlparse示例:',urlpar) 8 #和urlparse剛好相反,將元組(scheme='', netloc='', path='', params='', query='', fragment='')拼接為完整的url 9 urlunp = urllib.parse.urlunparse(urlpar) 10 print('urlunparse示例:',urlunp) 11 #將url netloc及前面部分的內容與newurl連接起來 12 url_ruby = urllib.parse.urljoin(url,newurl) 13 print('urljoin示例:',url_ruby)