首页 > 编程语言 >python-爬虫-获取浏览器的cookies

python-爬虫-获取浏览器的cookies

时间:2024-06-12 17:33:33浏览次数:20  
标签:index cookies python 爬虫 url cookie login 序列化

1、封装浏览器对象

# -*- coding: utf-8 -*-
"""
封装类
将获取浏览器的对象封装成一个类
调用方法:
    1、import Get_Browser
    2、driver = Get_Browser.Get_Browsers().get_browser()
"""


from selenium import webdriver

class Get_Browsers:

    def __init__(self):
        pass

    def get_browser(self):
        self.options = webdriver.ChromeOptions()

        #打开开发者模式
        self.options.add_experimental_option('excludeSwitches', ['enable-automation'])

        #打开浏览器后不关闭
        self.options.add_experimental_option("detach", True)

        # 禁用Blink功能
        self.options.add_argument("--disable-blink-features=AutomationControlled")

        #创建浏览器对象
        self.driver = webdriver.Chrome(options=self.options)

        # 覆盖window.navigate.webdriver
        # 打开浏览器后在控制台输入:window.navigator.webdriver    看返回是否是undefined-说明浏览器没有识别是selenium打开的浏览器、如果是true说明是被反爬了
        self.driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
            "source": """
                        Object.defineProperty(navigator, 'webdriver', {
                            get: () => undefined
                        })
                """
        })


        return self.driver

2、登陆网页获取cookies

# -*- coding: utf-8 -*-
"""
1、首次登陆网页获取cookie
2、拿到cookie的name:value值并序列化对象 、保存在文件里
3、读取文件中的cookie(反序列化为python对象)、返回cookie
"""

import time, pickle, os
from Get_Browser import Get_Browsers

#获取登录网站的cookie
def get_cookie(index_url, login_url):
    """
    获取登录后的网页cookie
    :param index_url: 网页首页
    :param login_url: 网页登录界面
    :return: 返回 被序列化的 cookies
    """
    #打开登陆界面
    driver.get(login_url)

    while True:
        time.sleep(5)

        #这里看情况改(如果登录后的页面和首页不一致就不行了)
        while driver.current_url == index_url:

            #获取登陆后的cookie信息
            # #返回一个列表字典-每个个字典中含有一个 name:value 键值对 、这个就是cookie的 名称和值
            tbCookies = driver.get_cookies()
            driver.quit()
            #print(tbCookies)
            print('==' * 60)
            #遍历cookie
            cookies = {}
            for item in tbCookies:
                #取出每个字典中的name和value 的值
                cookies[item['name']] = item['value']

            #保存cookie
            output_path = open('taobaoCookies.pickle', 'wb')
            #将 Python 对象序列化保存到文件中
            #pickle.load(文件名) 反序列化、将文件内容反序列化为python对象
            pickle.dump(cookies, output_path)

            output_path.close()
            #print(cookies)
            return cookies


#读取获取的cookie信息-反序列化cookie为python对象
def read_cookies(filename, index_url, login_url):
    """
    读取被序列化的cookie文件转为python对象
    :param filename: 保存cookie文件名
    :param index_url: 网页首页
    :param login_url: 网页登录页
    :return:
    """
    if os.path.exists(filename):
        read_path = open(filename, 'rb')
        #pickle.load(read_path) 反序列化、将文件内容反序列化为 python对象
        tbCookies = pickle.load(read_path)
    else:
        tbCookies = get_cookie(index_url, login_url)

    return tbCookies


if __name__ == '__main__':
    # 实例化对象
    driver = Get_Browsers().get_browser()

    index_url = "https://www.taobao.com/"
    login_url = "https://login.taobao.com/member/login.jhtml"
    filename = "taobaoCookies.pickle"

    #首次手动登录获取cookie、这里可做判断、如果存在taobaoCookies.pickle 保存cookies的文件就跳过、不存在就调用类方法获取cookies
    #get_cookie(index_url, login_url)

    #使用这个cookie去请求网页即可
    #详情看:E:\learn\python\mode1\work脚本\使用脚本\爬虫\网页自动登录\login\淘宝登录.py 中的request_adress(index_url):函数
    cookies = read_cookies(filename, index_url, login_url)
    print(cookies)

 

标签:index,cookies,python,爬虫,url,cookie,login,序列化
From: https://www.cnblogs.com/littlecc/p/18244377

相关文章

  • 朴素贝叶斯分类器 #数据挖掘 #Python
    朴素贝叶斯分类器是一种基于概率统计的简单但强大的机器学习算法。它假设特征之间是相互独立的(“朴素”),尽管在现实世界中这通常不成立,但在许多情况下这种简化假设仍能提供良好的性能。基本原理:朴素贝叶斯分类器利用贝叶斯定理,计算给定输入特征条件下属于某个类别的概率,并选择......
  • python系列:python fastapi + uvicorn 记录日志的最佳实践,结合nb_log
    pythonfastapi+uvicorn记录日志的最佳实践,结合nb_logpythonfastapi+uvicorn记录日志的最佳实践,结合nb_logpythonfastapi+uvicorn记录日志的最佳实践,结合nb_logpythonfastapi+uvicorn记录日志的最佳实践,要记录对fastapi什么时候请求了什么url和入......
  • Python中用PyTorch机器学习神经网络分类预测银行客户流失模型|附代码数据
    阅读全文:http://tecdat.cn/?p=8522最近我们被客户要求撰写关于神经网络的研究报告,包括一些图形和统计输出。分类问题属于机器学习问题的类别,其中给定一组特征,任务是预测离散值。分类问题的一些常见示例是,预测肿瘤是否为癌症,或者学生是否可能通过考试在本文中,鉴于银行客户的某些......
  • python中实例方法、类方法、静态方法
    实例方法self:代表类的实例类方法cls:代表类这个名称本身静态方法不能传递类的实例self,也不能传递类本身cls点击查看代码classMyClass:"""静态成员变量静态成员变量是被类的所有实例共享的访问方式:通过类名."""my_static_variable=0"......
  • python-爬虫-解决反爬机制-登录淘宝
    #-*-coding:utf-8-*-"""1、先手动登录获取cookie2、获取cookie保存在taobaoCookies.pickle文件中3、使用cookie去请求网页"""importosimportpickleimporttimefromseleniumimportwebdriverfromselenium.webdriver.support.waitimportWebDriverWa......
  • python-爬虫-playwright模块反爬
    fromplaywright.sync_apiimportPlaywright,sync_playwright,expectdefrun(playwright:Playwright)->None:#指定浏览器启动的端口#打开cmd:chrome--remote-debugging-port=9412--user-data-dir="F:\\google"#--remote-debugging-port=指定的端口......
  • 在Python中使用LSTM和PyTorch进行时间序列预测|附代码数据
    全文链接:http://tecdat.cn/?p=8145最近我们被客户要求撰写关于LSTM的研究报告,包括一些图形和统计输出。顾名思义,时间序列数据是一种随时间变化的数据类型。例如,24小时内的温度,一个月内各种产品的价格,一年中特定公司的股票价格诸如长期短期记忆网络(LSTM)之类的高级深度学习模型能......
  • PYTHON学习过程中的一些有用tips.
    开头语大家好,我是小安同学,我是大一开始学习python,面对这一门陌生的语言中间有许多的弯路,希望可以对大家的学习有所帮助。目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手。你可以用它来完成很多任务,比如数据科学、机器学......
  • python-数据分析-Matplotlib-1-进阶图形(气泡图-面积图-雷达图-玫瑰图-3D图)
    气泡图#-*-coding:utf-8-*-#气泡图#气泡图可以用来了解三个变量之间的关系,通过比较气泡位置和大小来分析数据维度之间的相关性。#例如在我们之前绘制的月收入和网购支出的散点图中,我们已经发现了二者的正相关关系,如果我们引入第三个变量网购次数,那么我们就需要使用气泡图......
  • python 代码说明 RAS基本原理
    importgmpy2q=7p=11e=13m=71if__name__=='__main__':print('step0公钥和私钥')print('公钥(n,e)')print('私钥(n,d)')#step1n=p*qprint(f'\nstep1最大公约数')......