国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

網頁爬蟲之cookie自動獲取及過期自動更新的實現方法

2019-11-19 14:13:41
字體:
來源:轉載
供稿:網友

本文實現cookie的自動獲取,及cookie過期自動更新。

社交網站中的很多信息需要登錄才能獲取到,以微博為例,不登錄賬號,只能看到大V的前十條微博。保持登錄狀態,必須要用到Cookie。以登錄www.weibo.cn 為例:

在chrome中輸入:http://login.weibo.cn/login/

分析控制臺的Headers的請求返回,會看到weibo.cn有幾組返回的cookie。

實現步驟:

1,采用selenium自動登錄獲取cookie,保存到文件;

2,讀取cookie,比較cookie的有效期,若過期則再次執行步驟1;

3,在請求其他網頁時,填入cookie,實現登錄狀態的保持。

1,在線獲取cookie

采用selenium + PhantomJS 模擬瀏覽器登錄,獲取cookie;

cookies一般會有多個,逐個將cookie存入以.weibo后綴的文件。

def get_cookie_from_network(): from selenium import webdriver url_login = 'http://login.weibo.cn/login/'  driver = webdriver.PhantomJS() driver.get(url_login) driver.find_element_by_xpath('//input[@type="text"]').send_keys('your_weibo_accout') # 改成你的微博賬號 driver.find_element_by_xpath('//input[@type="password"]').send_keys('your_weibo_password') # 改成你的微博密碼 driver.find_element_by_xpath('//input[@type="submit"]').click() # 點擊登錄 # 獲得 cookie信息 cookie_list = driver.get_cookies() print cookie_list cookie_dict = {} for cookie in cookie_list:  #寫入文件  f = open(cookie['name']+'.weibo','w')  pickle.dump(cookie, f)  f.close()  if cookie.has_key('name') and cookie.has_key('value'):   cookie_dict[cookie['name']] = cookie['value'] return cookie_dict

2,從文件中獲取cookie

從當前目錄中遍歷以.weibo結尾的文件,即cookie文件。采用pickle解包成dict,比較expiry值與當前時間,若過期則返回為空;

def get_cookie_from_cache(): cookie_dict = {} for parent, dirnames, filenames in os.walk('./'):  for filename in filenames:   if filename.endswith('.weibo'):    print filename    with open(self.dir_temp + filename, 'r') as f:     d = pickle.load(f)     if d.has_key('name') and d.has_key('value') and d.has_key('expiry'):      expiry_date = int(d['expiry'])      if expiry_date > (int)(time.time()):       cookie_dict[d['name']] = d['value']      else:       return {} return cookie_dict

3,若緩存cookie過期,則再次從網絡獲取cookie

def get_cookie(): cookie_dict = get_cookie_from_cache() if not cookie_dict:  cookie_dict = get_cookie_from_network() return cookie_dict

4,帶cookie請求微博其他主頁

def get_weibo_list(self, user_id): import requests from bs4 import BeautifulSoup as bs cookdic = get_cookie() url = 'http://weibo.cn/stocknews88'  headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36'} timeout = 5 r = requests.get(url, headers=headers, cookies=cookdic,timeout=timeout) soup = bs(r.text, 'lxml') ... # 用BeautifulSoup 解析網頁 ...

總結

以上所述是小編給大家介紹的網頁爬蟲之cookie自動獲取及過期自動更新的實現方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 崇礼县| 台南县| 乌审旗| 紫金县| 遂宁市| 平昌县| 崇阳县| 宜兴市| 阜城县| 五莲县| 西乌| 新巴尔虎右旗| 江津市| 渭源县| 前郭尔| 田东县| 莱阳市| 富蕴县| 临漳县| 明水县| 香港| 策勒县| 遂宁市| 凤冈县| 依兰县| 漯河市| 马关县| 玉龙| 绥滨县| 南岸区| 大渡口区| 文登市| 涞源县| 天台县| 颍上县| 布尔津县| 永福县| 文化| 南汇区| 辉县市| 巴中市|