urllib
- 包含模塊
- urllib.request:打開和讀取urls
- urllib.error:包含urllib.request產生的常見的錯誤,使用try捕捉
- urllib.parse:包含解析url的方法
- urllib.robotparse:解析robots.txt文件
- 網頁編碼問題的解決
- chardet 能夠自動檢測頁面文件的編碼格式,可是,可能有誤
import urllib
import chardet
if __name__ == '__main__':
url = 'http://......'
rsp = urllib.request.urlopen(url)
html = rsp.read()
cs = chardet.detect(html)
print(cs)
html = html.decode(cs.get("encoding","utf-8"))
print(html)
複製代碼
- urlopen的返回對象
- geturl:返回請求對象的url
- info:請求返回對象的meta信息
- getcode:返回http code(200.404.503...)
- requeat.data 的使用
- 訪問網絡的兩種方法
- get:
- 實際是利用參數給服務器傳遞信息
- 參數爲dict,而後用parse編碼
- post:
- 通常向服務器傳遞參數使用
- post是把信息自動加密處理
- 咱們若是想使用post信息,須要用到data參數
- 使用post,意味着HTTP的請求頭可能須要更改:
- Content-Type:application/x-www.form-urlencode
- Content-Length:數據長度
- 簡而言之,一旦更改請求方法,請注意其餘請求頭部信息相適應
- urllib.parse.urlencode能夠將字符串自動轉化成上面的格式
- 爲了更多的設置請求信息,單純的經過urlopen函數已經不太好用了(請求頭)
- 須要利用request.Request類
- urllib.error
- URLError產生的緣由:
- 沒網
- 服務器鏈接失敗
- 找不着指定服務器
- 是OSError的一個子類
- HTTPError:是URLError的一個子類
- 二者區別
- HTTPError是對應HTTP請求的返回碼錯誤,若是返回碼是400以上的,則會引起HTTPError
- URLError對應的通常是網絡出現問題,包括url問題
- 關係區別:OSError->URLError->HTTPError
UserAgent
- UserAgent:用戶代理,簡稱UA,屬於headers的一部分,服務器經過UA來判斷訪問者身份
- 設置UA能夠經過兩種方式
ProxyHangler處理(代理服務器)
- 使用代理IP,是爬蟲經常使用手段
- 獲取代理服務器的地址:
- www.xicidaili.com
- www.goubanjia.com
- 代理用來隱藏真實訪問中,代理也不容許頻繁訪問某一個固定的網站,因此,代理必定要不少不少
- 基本使用代理步驟:
- 設置代理地址
- 建立ProxyHandler
- 建立Opener
- 安裝Opener
cookie & session
- 因爲http協議的無記憶性,人們爲了彌補這個缺點,所採用的的一個補充協議
- cookie是發放給用戶(即http瀏覽器)的一段信息,session是保存在服務器上的對應的另外一半信息,用來記錄用戶信息
- 區別:
- 存放位置不一樣
- cookie並不安全
- session會保存在服務器上必定時間,會過時
- 單個cookie保存數據不超過4k,不少瀏覽器限制一個站點最多保存20個
- session的存放位置
- 存在服務器站
- 通常狀況下,session是放在內存或者數據庫裏中
- 沒有cookie登陸,能夠看到,沒有使用cookie則反饋網頁爲未登陸狀態
- 使用cookie登陸
- 把cookie複製下來,放在請求頭(headers)
- http模塊包含一關於cookie的模塊,經過他們咱們能夠自動使用cookie
- CookieJar
- 管理存儲cookie,向傳出的http請求添加cookie
- cookie存儲在內存裏,CookieJar實例回收後cookie將消失
- FileCookieJar(filename,delayload=None,policy=None):
- 使用文件管理cookie
- filname是保存cookie的文件
- MozillaCookieJar(filename,delayload=None,policy=None):
- 建立於Mozilla瀏覽器cookie.txt兼容的FileCookieJar
- LwpCookieJar(filename,delayload=None,policy=None):
- 建立於libwww-perl標準兼容的Set-Cookie3格式的FileCookieJar實例
- 他們的關係是:CookieJar->FileCookieJar->MozillaCookieJar & LwpCookieJar
- 自動使用cookie登陸的大體流程是:
- 打開登陸頁面後自動經過用戶密碼登陸
- 自動提取反饋回來的cookie
- 利用提取的cookie登陸隱私頁面
SSL
- SSL證書就是指遵照SSL安全套階層協議層的服務器數字證書
- 有第三方公司發放
- 遇到不信任的SSL證書,須要單獨處理
js加密
- 有的反爬蟲策略須要js對須要傳輸的數據進行加密處理(一般是取md5值)
- 通過加密,傳輸的就是密文,可是加密函數或者過程必定在瀏覽器完成的,也就是必定會把代碼(js代碼)暴露給使用者
- 經過閱讀加密算法,就能夠模擬出加密過程,從而達到破解
ajax
- 異步請求
- 必定會有url,請求方法,可能有數據
- 通常使用json格式