Selenium添加Cookie模拟无验证码登录

最近爬虫碰见需要用selenium模拟登录,有验证码滑块+图片点击验证,在解决过程中发现一篇很好的示例,虽然是无验证码的那种,但是还不错,先记下来!

代码及注释如下:

#!coding=utf-8
import time
from selenium import webdriver
import pickle


class BaiduSpider(object):
    def __init__(self, username, password):
        self.username = username
        self.password = password
        self.driver = webdriver.Chrome()
        self.driver.get(url='http://i.baidu.com/my/history')
        self.set_cookie()
        self.is_login()

    def is_login(self):
        '''判断当前是否登陆'''
        self.driver.refresh()
        html = self.driver.page_source
        if html.find(self.username) == -1:  # 利用用户名判断是否登陆
            print('还未登录,请手动登录!')
            self.login()
        else:
            print('已经登录!')
            self.driver.get(url='https://tieba.baidu.com/index.html?traceid=')
            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('xxxx', 'xxxx')  # 你的百度账号,密码
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值