1. 程式人生 > >爬蟲之cookiejar模塊

爬蟲之cookiejar模塊

我們 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模塊