運行平臺:Windows
Python版本:Python3.x
IDE:Sublime text3
壹、為什麽要使用Cookie
Cookie,指某些網站為了辨別用戶身份、進行session跟蹤而儲存在用戶本地終端上的數據(通常經過加密)。
比如說有些網站需要登錄後才能訪問某個頁面,在登錄之前,妳想抓取某個頁面內容,登陸前與登陸後是不同的,或者不允許的。
使用Cookie和使用代理IP壹樣,也需要創建壹個自己的opener。在HTTP包中,提供了cookiejar模塊,用於提供對Cookie的支持。
') #打印cookie信息
for item in cookie:
print('Name = %s' % item.name)
print('Value = %s' % item.value)1234567891011121314151617
我們使用以上方法將cookie保存到變量中,然後打印出了cookie中的值,運行結果如下:
2)保存Cookie到文件
在上面的方法中,我們將cookie保存到了cookie這個變量中,如果我們想將cookie保存到文件中該怎麽做呢?方便以後直接讀取文件使用,這時,我們就要用到FileCookieJar這個對象了,在這裏我們使用它的子類MozillaCookieJar來實現Cookie的保存,編寫代碼如下:
# -*- coding: UTF-8 -*-from urllib import requestfrom ') #保存cookie到文件
cookie.save(ignore_discard=True, ignore_expires=True)123456789101112131415161718
cookie.save的參數說明:
ignore_discard的意思是即使cookies將被丟棄也將它保存下來;
ignore_expires的意思是如果在該文件中cookies已經存在,則覆蓋原文件寫入。
在這裏,我們將這兩個全部設置為True。
運行之後,cookies將被保存到cookie.txt文件中。我們可以查看自己查看下cookie.txt這個文件的內容。
3)從文件中獲取Cookie並訪問
我們已經做到把Cookie保存到文件中了,如果以後想使用,可以利用下面的方法來讀取cookie並訪問網站,感受壹下:
# -*- coding: UTF-8 -*-from urllib import requestfrom ') #打印信息print(response.read().decode('utf-8'))12345678910111213141516171819
了解到以上內容,我們那就可以開始正式編寫模擬登陸伯樂在線的程序了。同時,我們也可以獲取相親MM的聯系方式。
4.編寫代碼
我們利用CookieJar對象實現獲取cookie的功能,存儲到變量中。然後使用這個cookie變量創建opener,使用這個設置好cookie的opener即可模擬登陸,同筆記四中講到的IP代理的使用方法類似。
創建cookie_test.py文件,編寫代碼如下:
# -*- coding: UTF-8 -*-from urllib import requestfrom urllib import errorfrom urllib import parsefrom /'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 = 'htt/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)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
5.運行結果如下:
三、總結
獲取成功!如果看過之前的筆記內容,我想這些代碼應該很好理解吧。