前言
本文的文字及圖片來源於網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理。
作者:huhanghao
Cookie,指某些網站為了辨別用戶身份、進行session跟蹤而儲存在用戶本地終端上的數據(通常經過加密)。 比如說有些網站需要登錄后才能訪問某個頁面,在登錄之前,你想抓取某個頁面內容,登陸前與登陸后是不同的,或者不允許的。另外如果你剛學不久。對這方面還不熟,建議先去小編的Python交流.裙 :一久武其而而流一思(數字的諧音)轉換下可以找到了,里面有最新Python教程項目可拿,多跟里面的人交流,比自己摸索效率更高哦!
在python中它為我們提供了cookiejar模塊,它位於http包中,用於對Cookie的支持。通過它我們能捕獲cookie並在后續連接請求時重新發送,比如可以實現模擬登錄功能。該模塊主要的對象有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。
## cookie的獲取
# -*- coding: UTF-8 -*-
from urllib import request
from http import cookiejar
if __name__ == '__main__':
#聲明一個CookieJar對象實例來保存cookie
cookie = cookiejar.CookieJar()
#利用urllib.request庫的HTTPCookieProcessor對象來創建cookie處理器,也就CookieHandler
handler=request.HTTPCookieProcessor(cookie)
#通過CookieHandler創建opener
opener = request.build_opener(handler)
#此處的open方法打開網頁
response = opener.open('http://www.baidu.com')
#打印cookie信息
for item in cookie:
print('Name = %s' % item.name)
print('Value = %s' % item.value)
cookie的文件保存
# -*- coding: UTF-8 -*-
from urllib import request
from http import cookiejar
if __name__ == '__main__':
#設置保存cookie的文件,同級目錄下的cookie.txt
filename = 'cookie.txt'
#聲明一個MozillaCookieJar對象實例來保存cookie,之后寫入文件
cookie = cookiejar.MozillaCookieJar(filename)
#利用urllib.request庫的HTTPCookieProcessor對象來創建cookie處理器,也就CookieHandler
handler=request.HTTPCookieProcessor(cookie)
#通過CookieHandler創建opener
opener = request.build_opener(handler)
#此處的open方法打開網頁
response = opener.open('http://www.baidu.com')
#保存cookie到文件
cookie.save(ignore_discard=True, ignore_expires=True)
加載保存的cookie,並進行網頁訪問
# -*- coding: UTF-8 -*-
from urllib import request
from http import cookiejar
if __name__ == '__main__':
#設置保存cookie的文件的文件名,相對路徑,也就是同級目錄下
filename = 'cookie.txt'
#創建MozillaCookieJar實例對象
cookie = cookiejar.MozillaCookieJar()
#從文件中讀取cookie內容到變量
cookie.load(filename, ignore_discard=True, ignore_expires=True)
#利用urllib.request庫的HTTPCookieProcessor對象來創建cookie處理器,也就CookieHandler
handler=request.HTTPCookieProcessor(cookie)
#通過CookieHandler創建opener
opener = request.build_opener(handler)
#此用opener的open方法打開網頁
response = opener.open('http://www.baidu.com')
#打印信息
print(response.read().decode('utf-8'))
這里對cookie的使用類似於,之前我們用到的對代理的使用。
加載cookie,實現網站的登錄
# -*- coding: UTF-8 -*-
from urllib import request
from urllib import error
from urllib import parse
from http import cookiejar
if __name__ == '__main__':
#登陸地址
login_url = 'http://www.jobbole.com/wp-admin/admin-ajax.php'
#User-Agent信息
user_agent = r'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36'
#Headers信息
head = {'User-Agnet': user_agent, 'Connection': 'keep-alive'}
#登陸Form_Data信息
Login_Data = {}
Login_Data['action'] = 'user_login'
Login_Data['redirect_url'] = 'http://www.jobbole.com/'
Login_Data['remember_me'] = '0' #是否一個月內自動登陸
Login_Data['user_login'] = '********' #改成你自己的用戶名
Login_Data['user_pass'] = '********' #改成你自己的密碼
#使用urlencode方法轉換標准格式
logingpostdata = parse.urlencode(Login_Data).encode('utf-8')
#聲明一個CookieJar對象實例來保存cookie
cookie = cookiejar.CookieJar()
#利用urllib.request庫的HTTPCookieProcessor對象來創建cookie處理器,也就CookieHandler
cookie_support = request.HTTPCookieProcessor(cookie)
#通過CookieHandler創建opener
opener = request.build_opener(cookie_support)
#創建Request對象
req1 = request.Request(url=login_url, data=logingpostdata, headers=head)
#面向對象地址
date_url = 'http://date.jobbole.com/wp-admin/admin-ajax.php'
#面向對象
Date_Data = {}
Date_Data['action'] = 'get_date_contact'
Date_Data['postId'] = '4128'
#使用urlencode方法轉換標准格式
datepostdata = parse.urlencode(Date_Data).encode('utf-8')
req2 = request.Request(url=date_url, data=datepostdata, headers=head)
try:
#使用自己創建的opener的open方法
response1 = opener.open(req1)
response2 = opener.open(req2)
html = response2.read().decode('utf-8')
index = html.find('jb_contact_email')
#打印查詢結果
print('聯系郵箱:%s' % html[index+19:-2])
except error.URLError as e:
if hasattr(e, 'code'):
print("HTTPError:%d" % e.code)
elif hasattr(e, 'reason'):
print("URLError:%s" % e.reason)
以上就是本期講的內容,另外如果你對這方面還不熟,剛學不久,建議先去小編的Python交流.裙 :一久武其而而流一思(數字的諧音)轉換下可以找到了,里面有最新Python教程項目可拿,多跟里面的人交流,比自己摸索效率更高哦!