爬蟲之cookiejar模塊
阿新 • • 發佈:2018-05-13
我們 bsp action 替代 lwp QQ word 通過 renren
簡介
有時候我們需要爬一些需要登錄才能進入網頁,這個時候就要用到cookie相關的一些模塊來操作了
內置的http包裏包含了cookie相關的一些模塊,通過她們我們可以自動使用cookie
- CookieJar
- 管理儲存cookie,像傳出的http請求添加cookie
- cookie存儲在內存中,CookieJar示例回收後cookie將自動消失
- FileCookieJar
- 是CookieJar的字類
- cookie保存在文件中
- MozillaCookiejar
- 是FileCookieJar的子類
- 與moccilla瀏覽器兼容
- LwpCookieJar
- 是FileCookieJar的子類
- 與libwww-perl標準兼容
案例
訪問登錄後的人人網主頁
from urllib import request,parse from http import cookiejar # 創建cookiejar實例對象 cookie = cookiejar.CookieJar() # 根據創建的cookie生成cookie的管理器 cookie_handle = request.HTTPCookieProcessor(cookie) # 創建http請求管理器 http_handle = request.HTTPHandler() # 創建https管理器 https_handle = request.HTTPSHandler() # 創建求求管理器,將上面3個管理器作為參數屬性 # 有了opener,就可以替代urlopen來獲取請求了 opener = request.build_opener(cookie_handle,http_handle,https_handle) def login(): ‘‘‘ 負責初次登錄 需要傳遞用戶名和密碼,來獲取登錄的cookie憑證 ‘‘‘ # 登錄url,需要從登錄form的action屬性中獲取 url = ‘http://www.renren.com/PLogin.do‘ # 登錄所需要的數據,數據為字典形式, # 此鍵值需要從form扁擔中對應的input的name屬性中獲取 data = { ‘email‘:‘[email protected]‘, ‘password‘:‘123456‘ } # 將數據解析成urlencode格式 data = parse.urlencode(data) req = request.Request(url,data=data) # 正常是用request.urlopen(),這裏用opener.open()發起請求 response = opener.open(req) def getHomePage(): ‘‘‘ 獲取登錄後的頁面 ‘‘‘ # 此url是登錄後的鏈接地址 url = ‘http://www.renren.com/965187997/profile‘ # 如果已經執行了上面的login函數, # 那麽此時的opener已經是包含了cookie信息的一個opener對象 res = opener.open(url) html = res.read().decode() with open(‘renren.html‘,‘w‘) as f: f.write(html) if __name__ == ‘__main__‘: ‘‘‘ 依次執行上面兩個函數 ‘‘‘ login() getHomePage()
爬蟲之cookiejar模塊