⽹页爬⾍之cookie⾃动获取及过期⾃动更新的实现⽅法本⽂实现cookie的⾃动获取,及cookie过期⾃动更新。
社交⽹站中的很多信息需要登录才能获取到,以微博为例,不登录账号,只能看到⼤V的前⼗条微博。保持登录状态,必须要⽤到Cookie。以登录www.weibo为例:
分析控制台的Headers的请求返回,会看到weibo有⼏组返回的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 = 'login.weibo/login/'
driver = webdriver.PhantomJS()
<(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 = _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']
selenium获取cookiereturn 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:
dswith('.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 = 'weibo/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 = (url, headers=headers, cookies=cookdic,timeout=timeout)
soup = , 'lxml')
...
# ⽤BeautifulSoup 解析⽹页
...
总结
以上所述是⼩编给⼤家介绍的⽹页爬⾍之cookie⾃动获取及过期⾃动更新的实现⽅法,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论