selenium3.7+ python3 添加cookie模拟登陆 Posted on 2019-05-09 | In python , 学习爬虫 , 爬虫小实例 | | Words count in article: 253 | Reading time ≈ 1 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758#!coding=utf-8import timefrom selenium import webdriverimport pickle class BaiduSpider(object): def __init__(self,username,password): self.username = username self.password = password self.driver = webdriver.Chrome() self.driver.get(url='http://www.baidu.com') self.set_cookie() self.is_login() def is_login(self): '''判断当前是否登陆''' self.driver.refresh() html = self.driver.page_source if html.find(self.username) == -1: #利用用户名判断是否登陆 # 没登录 ,则手动登录 self.login() else: #已经登录 尝试访问搜索记录,可以正常访问 self.driver.get(url='http://i.baidu.com/my/history') time.sleep(30) # 延时看效果 def login(self): '''登陆''' time.sleep(60) #等待手动登录 self.driver.refresh() self.save_cookie() def save_cookie(self): '''保存cookie''' # 将cookie序列化保存下来 pickle.dump(self.driver.get_cookies(), open("cookies.pkl", "wb")) def set_cookie(self): '''往浏览器添加cookie''' '''利用pickle序列化后的cookie''' try: cookies = pickle.load(open("cookies.pkl", "rb")) for cookie in cookies: cookie_dict = { "domain": ".baidu.com", # 火狐浏览器不用填写,谷歌要需要 'name': cookie.get('name'), 'value': cookie.get('value'), "expires": "", 'path': '/', 'httpOnly': False, 'HostOnly': False, 'Secure': False} self.driver.add_cookie(cookie_dict) except Exception as e: print(e) if __name__ == '__main__': BaiduSpider('usename','!!!!') # 你的百度账号,密码 Donate? comment? Donate WeChat Pay Alipay