Python爬虫学习笔记(实例:Selenium+cookies实现自动登录百度首页)

实现效果:利用selenium添加cookies信息登录百度首页,如果账号没有登录,则首次手动登录账号后去cookies信息写入文件,待浏览器60秒后自动关闭,工程目录下生成cookies.pkl文件,之后再登录百度首页账号自动登录完毕

#!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='https://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='https://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:
               #以下信息使用开发者工具或Chrome插件EditThisCookie可查看
                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('********', '*****')  # 你的百度账号,密码
发布了48 篇原创文章 · 获赞 19 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_33360009/article/details/104344322
今日推荐