1、request模塊html
1.urlopen() --返回值爲HTTPResponse對象python
urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, *, cafile=None, capath=None, cadefault=False, context=None)
參數:url必傳瀏覽器
①data:傳入以後請求變爲POST,需轉爲bytes類型的參數網絡
②timeout:設置超時時間,沒有獲得響應則拋出異常,異常類型爲socket.timeout,默認爲全局時間socket
③其餘:context:設置SSL,ca:ca證書(使用HTTPS有用),cadefault已經棄用編碼
2.Request類 --加入Headers信息,假裝成瀏覽器url
class Request: def __init__(self, url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None):
參數:url必傳代理
①data:bytes類型code
②headers:字典類型,請求頭,可經過修改User-Agent來假裝瀏覽器。等同於實例方法add_header(k,v)htm
③origin_req_host:請求方的host名稱或ip地址
④unverifiable:沒有權限爲True,默認爲False
⑤method:請求方法
3.高級用法
利用Handler來構建Opener。驗證(HTTPBasicAuthHandler)、代理(ProxyHandler)、Cookies(HTTPCookieProcessor)
2、error模塊
error模塊定義了由request模塊產生的異常
基類:URLError;子類:HTTPError
3、parse模塊
1.urlparse() --返回ParseResult對象(scheme:'http',netloc='www,baidu.com',path='/index.html',params='user',query='id=5',fragment='comment')
http://www.baidu.com/index.html;user?id=5#comment 當url不包含params和query時,fragment會被解析爲path的一部分
ParseResult其實是一個元組,能夠用索引或屬性名來獲取,如result[0],result.scheme
def urlparse(url, scheme='', allow_fragments=True):
參數:url必填
①scheme:協議(http,https),只有在url中不包含scheme信息時設置的纔有效
②allow_fragments:是否忽略fragment,默認不忽略
2.urlunparse()
構造url,參數爲一個可迭代對象如['http','www.baidu.com','index.htm','user','a=6','comment'],長度必須爲6
3.urlsplit()
和urlparse()相似,不單獨解析params,將params合併到path中
--返回SplitResult對象(scheme:'http',netloc='www,baidu.com',path='/index.html;user',query='id=5',fragment='comment')
4.urlunsplit()
與urlunparse()相似
構造url,參數爲一個可迭代對象如['http','www.baidu.com','index.htm','a=6','comment'],長度必須爲5
5.urljoin()
構造url,該方法會分析base的scheme,netloc和path並對新連接缺失的部分進行補充。
def urljoin(base, url, allow_fragments=True):
6.urlencode()
def urlencode(query, doseq=False, safe='', encoding=None, errors=None, quote_via=quote_plus):
在構造GET請求參數的時候很是有用,將字典類型序列化爲GET請求參數
from urllib.parse import urlencode params={'name':'jyh','age':18} base='http://www.baidu.com?' url=base+urlencode(params) print(url) #---> http://www.baidu.com?name=jyh&age=18
7.parse_qs()
反序列化,將GET請求參數轉回字典
8.parse_qsl()
將GET參數轉化爲元組組成的列表
9.quote()
將內容轉化爲URL編碼的格式
quote('壁紙') --->%E5%A3%81%E7%BA%B8
10.unquote()
URL解碼
4、robotparser模塊 --Robots協議
規定網頁哪些可爬,哪些不可爬
本文參考文獻:[1]崔慶才.python3網絡爬蟲開發實戰[M].北京:人民郵電出版社,2018:102-122.