1. 程式人生 > >Python筆記(十三):urllib模塊

Python筆記(十三):urllib模塊

二進制 數據 print web 應用程序 IE query request file

(一) 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)

技術分享圖片

Python筆記(十三):urllib模塊