## urllib
[python2.7模塊文檔][1]
該模塊提供了用于獲取萬維網(the World Wide Web)數據的高層接口。該模塊在python3中有改變。
### urlopen
urllib.urlopen(url[, data[, proxies]])
打開URL所表示的網絡上的對象。它會使用socket連接網絡上的某個服務器。 如果連接失敗,會拋出**IOError**異常。如果一切順利,返回一個file-like對象。該對象擁有以下方法:
`read(),readline(),readlines(),fileno(),close(),info(),getcode() 和geturl()`,同時也支持iterator。
>[info] geturl()函數返回網頁的真實URL。geturl()函數用于獲得重定向后的URL。
### urlretrieve
urllib.urlretrieve(url[, filename[, reporthook[, data]]])
如果需要,將由URL表示的網絡對象復制到本地文件。如果URL指向本地文件,或存在對象的有效緩存副本,則不會復制對象。返回一個元組(filename, 頭)其中filename是可以找到對象的本地文件名,頭是返回的urlopen()返回的對象的`info()`方法。
### urlencode
urllib.urlencode(query[, doseq])
將需要傳入的參數進行編碼
### unquote
~~~
>>> from urllib import unquote
>>> unquote('%C4%A7%CA%DE')
'\xc4\xa7\xca\xde'
>>> print unquote('%C4%A7%CA%DE')
魔獸
~~~
---
## urllib2
[python2.7模塊文檔][2]
### urlopen
urllib2.urlopen(url[, data][, timeout])
打開 URL url, url參數可以是一個字符串,也可以是一個 Request 對象.
>[danger] HTTPS 請求不會做任何驗證服務器證書的動作.
這個方法返回一個類文件對象,并帶有三個附加方法。
>[info] geturl() — 返回所獲取資源的URL, 通常用于決定是否跟著一個重定向
info() — 返回頁面的元信息,例如頭部信息,信息以 mimetools.表單的形式顯現。信息例子 (請看 HTTP頭快速參考)
getcode() — 返回響應的HTTP狀態碼.
當錯誤時引發 **URLError**
### Request
urllib2.Request(url[, data][, headers])
>[info] data 可以是字符串,不在需要使用urlencode轉化
headers 為字典形式
### URLError
urllib2.URLError
url地址問題引起的Error
### HTTPError
urllib2.HTTPError
比如沒有權限訪問指定的資源
### 使用cookie
```
# 生成cookie容器
cookie = cookielib.CookieJar()
# cookie處理器
handler = urllib2.HTTPCookieProcessor(cookie)
# 生成opner,有方法opener.open
self.opener = urllib2.build_opener(handler)
try:
request = urllib2.Request(url=url, headers=headers)
response = opener.open(request)
return response.read()
except urllib2.URLError, e:
if hasattr(e, 'reason'):
print "連接服務器失敗, 錯誤原因", e.reason
return None
```
### httpd基本的帳號認證
~~~
def login():
auth_handler = urllib2.HTTPBasicAuthHandler()
auth_handler.add_password(realm='Secrete Aera',
uri=remote_host,
user='jenkins',
passwd='jenkins')
opener = urllib2.build_opener(auth_handler)
# ...and install it globally so it can be used with urlopen.
urllib2.install_opener(opener)
~~~
## [測試例子][3]
[1]:http://python.usyiyi.cn/translate/python_278/library/urllib.html#module-urllib
[2]:http://python.usyiyi.cn/translate/python_278/library/urllib2.html#module-urllib2
[3]:https://www.cnblogs.com/poerli/p/6429673.html
- 前言
- 環境搭建
- pypi
- 打包
- Python 2 和 Python 3 的版本之間差別
- 項目
- 第一部分
- 第1章 基礎
- Python安裝
- python代碼文件類型
- python對象
- 核心數據類型
- 核心數據類型--整型和浮點型
- 核心數據類型--字符串
- str.format
- 核心數據類型--列表
- 核心數據類型--元組
- 核心數據類型--字典
- 核心數據類型--集合
- 核心數據類型--文件對象
- 調用bash
- 標準輸入輸出
- str-repr
- 字符編碼
- 迭代器和生成器
- 第2章 語句和語法
- 賦值語句
- if語句
- while語句
- for語句
- assert
- 第3章 函數
- 函數作用域
- 工廠函數
- 內置函數
- 遞歸
- 嵌套作用域和lambda
- 參數傳遞
- 函數式編程
- property可寫與可讀
- 第5章 模塊
- 模塊導入
- 模塊命名空間
- 相對導入和絕對導入
- 模塊重載
- 在模塊中隱藏數據
- 過渡性重載
- 第6章 類
- 面向對象還是面向過程?
- 構造函數 析構函數
- call
- 運算符重載
- str()
- 待定
- 即時生成屬性
- 多態
- 線程和進程
- thread模塊
- threading模塊
- threading線程鎖
- 糖果機
- multiprocessing
- 阻塞非阻塞同步異步
- 單線程和多線程對比
- 生產者消費者模型
- 第二部分
- 獲取系統資源信息
- 獲取進程所占的物理內存
- dmidecode獲取系統信息
- 網絡編程
- 網絡基礎
- python中的套接字
- socket模塊
- 第三部分 高級功能
- 閉包入門
- 閉包的應用
- 裝飾器入門
- 裝飾器應用
- 第四部分 項目實戰
- graphite
- 模塊
- collections
- datetime
- Enum
- faker
- fabric
- fileinput
- fire
- fnmatch
- getpass
- glob
- hashlib
- heapq
- json模塊
- log
- os
- Paramiko
- parser
- platform
- pyyaml
- Queue
- random
- re
- 特殊符號和字符
- re模塊
- shelves
- subprocess
- time
- urllib_urllib2_requests
- urllib urllib2
- requests
- 標準模塊ConfigParser
- 擴展模塊Mysqldb
- 擴展模塊dns
- 擴展模塊request
- uuid
- cacheout 緩存庫
- delorean 時間
- 附錄
- 內置函數
- python實現各種排序算法
- 常見報錯
- pymongo
- pyrocksdb
- 常用
- ERROR