1. 程式人生 > 其它 >python 爬蟲入門學習4 urllib新增cookies驗證

python 爬蟲入門學習4 urllib新增cookies驗證

技術標籤:爬蟲python

新增cookies

分為手動新增cookies 和 自動新增cookies

在登陸網頁之後會在本地儲存你的cookie資訊,用於身份驗證,就像是一把鑰匙,我們可以手動新增cookie 和 自動新增cookie 當然自動新增cookie 是建立在手動的基礎上,

手動新增cookie

# 手動新增cookie 比較簡單, 因為cookie 是儲存在頭部資訊中的 如果想要新增cookie資訊,只需要在header 中增加一條key

header = {
	'User-agent': '321',
	'cookie': 'cookie'
}
url = "http://www.baidu.com"
# 建立Request物件 Res = urllib.request.Request(url, headers = header) response = urllib.request.urlopen(Res) data = response.read().decode()

自動新增cookie

因為新增cookie 資訊是用於驗證身份的, 自動儲存cookie 資訊我們需要的是登陸儲存的cookie 我們首先要簡單瞭解 post 請求:
  post 請求是指網頁向後端傳送資訊所用到的請求方式,其中包含了後端開發人員定義的驗證資訊,比如username pwd 以及其他用於驗證的資訊

import urllib.request

login_url = 'https://passport.baidu.com/v2/?login'

header = {
	"User-agent": '123'
}
# 這就是post請求需要傳送的資訊, 僅用作示例
login_form_data = {
	'username': '123',
	'pwd': '123',
	'id_firm': '123'
}
from html import cookieJar
# 呼叫http方法中的cookieJar方法來自動儲存cookie
cookie_Jar = cookiejar.
CookieJar() # 建立可以呼叫cookieJar 的處理器, 傳遞cookie_jar cookie_handler = urllib.request.HTTPCookieProcessor(cookie_jar) # 根據處理器生成相應的opener opener = urllib.build_opener(cookie_handler) # 帶著引數向登陸頁面傳送post 請求 請求登陸 # 建立請求物件 # 轉義 import urllib.parse parsed_data = urllib.parse.urlencode(login_form_data).encode('utf-8') # !! 注意這裡的data 並不接受字典的型別,我們需要對其進行轉碼讓equest 接受這個引數, login_request = urllib.request.Request(login_url, headers=header, data=parsed_data) # 通過使用opener 來請求登入 登入頁面返回一個cookie 資訊, # 在下面這行程式碼中,如果成功之後會直接將cookie資訊儲存在cookie_jar 當中, opener.open(login_request) n_url = 'http://www.baidu.com' n_request = urllib.request.Request(n_url, headers=header) # 用我們建立好的含有cookie 資訊的opener 來登陸頁面 response = opener.open(n_request) data= response.read().decode('utf-8')