使用python的selenium自动化登录获取cookie

2023-11-08

要爬取广点通广告平台数据,这平台居然没有提供开发用的API数据接口,登录是QQ登录,很复杂,不好抓取登录接口逻辑

于是就用这个

想录gif的不好录 -

文档:

https://www.yiibai.com/selenium/selenium_webdriver.html

python扩展

https://pypi.org/project/selenium/

selenium的python官方手册:

https://selenium-python-zh.readthedocs.io/en/latest/index.html

代码:

#!/usr/local/bin/python
# -*- coding: UTF-8 -*-


from selenium import webdriver # 从selenium导入webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
import json
import time

chrome_options = Options()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
# 不启动界面显示- linux下命令行模式必须启用
# chrome_options.add_argument('--headless')

driver = webdriver.Chrome(chrome_options=chrome_options)  # Optional argument, if not specified will search path.
driver.get('http://adnet.qq.com/index') # 获取百度页面
driver.switch_to.frame('ptlogin_iframe') # 进入iframe

# 选择账号密码登录
selElement = driver.find_element_by_id('switcher_plogin')
selElement.click()

# 输入账号密码
userElement = driver.find_element_by_id('u') 
pwdButton = driver.find_element_by_id('p') #密码输入框
subButton = driver.find_element_by_id('login_button') #密码输入框
userElement.send_keys("111") #输入框输入
pwdButton.send_keys("xxx") #输入框输入
subButton.click() 

# 显示等待
try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "page"))
    )
finally:
    cookies = driver.get_cookies()
    # time.sleep(5)
    # driver.refresh('http://adnet.qq.com/index')

    with open("cookies.txt", "w") as fp:
        json.dump(cookies, fp)


    # 关闭浏览器
    driver.close()

 

 

很简洁吧,真真实实能解决登录这一块的问题,但是linux上环境的搭建真滴不容易

 Linux环境搭建

大致流程

1、python

2、pip selenium

3、chrome brower

4、/usr/bin/chromedriver

参考博客:

Linux配置Selenium+Chrome+Python实现自动化测试:
http://zhaoyabei.github.io/2016/08/29/Linux%E9%85%8D%E7%BD%AESelenium+Chrome+Python%E5%AE%9E%E7%8E%B0%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/

安装chrom-linux去官网:

https://www.chrome64bit.com/index.php/google-chrome-64-bit-for-linux

下载deb文件到机器上

dpkg -i google-chrome-stable_current_amd64.deb

但是报很多的依赖问题

Unpacking google-chrome-stable (72.0.3626.121-1) ...
dpkg: dependency problems prevent configuration of google-chrome-stable:
 google-chrome-stable depends on fonts-liberation; however:
  Package fonts-liberation is not installed.
 google-chrome-stable depends on libappindicator3-1; however:
  Package libappindicator3-1 is not installed.
 google-chrome-stable depends on libasound2 (>= 1.0.16); however:
  Package libasound2 is not installed.
 google-chrome-stable depends on libatk-bridge2.0-0 (>= 2.5.3); however:
  Package libatk-bridge2.0-0 is not installed.
 google-chrome-stable depends on libatk1.0-0 (>= 2.2.0); however:
  Package libatk1.0-0 is not installed.
 google-chrome-stable depends on libatspi2.0-0 (>= 2.9.90); however:
  Package libatspi2.0-0 is not installed.
 google-chrome-stable depends on libcairo2 (>= 1.6.0); however:
  Package libcairo2 is not installed.
 google-chrome-stable depends on libgdk-pixbuf2.0-0 (>= 2.22.0); however:
  Package libgdk-pixbuf2.0-0 is not installed.
 google-chrome-stable depends on libgtk-3-0 (>= 3.9.10); however:
  Package l
dpkg: error processing package google-chrome-stable (--install):
 dependency problems - leaving unconfigured
Processing triggers for mime-support (3.59ubuntu1) ...
Processing triggers for man-db (2.7.5-1) ...
Errors were encountered while processing:
 google-chrome-stable
View Code
sudo apt-get -f install

解决依赖问题

查看是否已经安装:

which google-chrome

 

转载于:https://www.cnblogs.com/xuweiqiang/p/10439976.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用python的selenium自动化登录获取cookie 的相关文章

随机推荐

  • 记录Maven的相关操作(笔记整理)

    一 安装 我使用的是免安装版的 直接解压缩就可以使用 二 配置环境变量 打开环境变量配置 右键计算机 属性 高级系统设置 高级 环境变量 在系统变量中配置 配置MAVEN HOME 在系统变量中新建 变量名MAVEN HOME 变量值 ma
  • Swoole - 为什么说Swoole中小型企业微服务的首选技术方案

    概述 Swoole的出现 使PHP语言不再局限于传统的 Web领域 对中小企业有很好的支持 有一些企业盲目的追求微服务和K8s 我真诚建议不要轻易上微服务 上了你才知道这里面的辛酸 高成本 低效率会拖碎整个团队 研究中小企业的提效 节省成本
  • sql中on条件和where条件查询结果一样嘛?

    如果使用 join不会有影响 但是 在使用left join时 on和where条件的区别如下 on条件是在生成临时表时使用的条件 它不管on中的条件是否为真 都会返回左边表中的记录 where条件是在临时表生成好后 再对临时表进行过滤的条
  • 【RuoYi-Vue-Plus】学习笔记 28 - 数据脱敏 Json 序列化工具 SensitiveJsonSerializer(Jackson 源码)

    文章目录 前言 参考目录 功能代码实现及测试 1 数据脱敏注解 Sensitive 2 脱敏策略枚举 SensitiveStrategy 3 脱敏 Json 序列化器 SensitiveJsonSerializer 4 测试类 TestSe
  • 大数据面试题集

    史上最全大数据面试题 V3 1 特辑 目录 一 数据仓库 1 维表和宽表的考查 主要考察维表的使用及维度退化手法 2 数仓表命名规范 3 拉链表的使用场景 4 数据库和数据仓库有什么区别 5 有什么维表 时间维表 用户维表 产品维表 合同维
  • PHP 三元 !empty 而不是评估为真或假 可用isset()

    是否可以使用速记三元来检查变量是否已设置 而不是是否计算结果为零或非零 例如 我试过 var 0 echo string var string false 2 但由于前两个表达式的计算结果均为 0 或 false 因此显示为 2 我认为也许
  • Netty4 websocket 开启服务端并设置IP和端口号

    一 环境也就是POM文件
  • Python学习(4)证件照底色变换

    Python学习 4 证件照底色变换 前言 一 Python准备 二 Python仿真 三 仿真结果 四 小结 前言 随着人工智能研究的不断兴起 Python的应用也在不断上升 由于Python语言的简洁性 易读性以及可扩展性 特别是在开源
  • Java面向对象三大特性(封装、继承、多态)

    文章目录 前言 一 封装 1 封装的概念 2 private实现封装 3 getter和setter方法 4 封装的好处 二 继承 1 继承的概念 2 extends实现继承 3 super 关键字 Object 4 访问权限 1 priv
  • 蓝桥杯单片机第十四届第三次模拟题

    题目 Main c include
  • [数值计算-12]:什么是函数逼近:插值、拟合、回归

    作者主页 文火冰糖的硅基工坊 https blog csdn net HiWangWenBing 本文网址 https blog csdn net HiWangWenBing article details 119901220 目录 第1章
  • ISO-15118 -1,2,3,4,5,6,8,9,20【最新版】1~20,国际标准分类中,ISO15118涉及到电车、道路车辆装置

    ISO 15118 本专题涉及ISO15118的标准有 国际标准分类中 ISO15118涉及到电车 道路车辆装置 在中国标准分类中 ISO15118涉及到无轨电车牵引供电 交通管理综合 电子 电气设备 公路工程 ISO 15118 20 2
  • 【Java学习笔记】异常处理

    一 异常分类 1 可检查的异常 编译时检查 必须捕捉或声明 可查异常虽然是异常状况 但在一定程度上它的发生是可以预计的 而且一旦发生这种异常状况 就必须采取某种方式进行处理 2 不可检查的异常 编译时不受检查 不需要捕捉或声明 包括erro
  • 主板电源开关接口图解_主板跳线接法示意图,超详细适合DIY新手

    现在DIY自己装机已经很简单了 网上的教程各种各样 也不用专门去电脑城找专业人士来装了 只需要购买好硬件即可 不过 在组装电脑时有一个步骤是很难的 就是主板跳线或者说机箱里面各种线怎么接 下面就给大家说说主板跳线接法 一 开关机跳线和指示灯
  • linux命令总结dd命令详解

    dd 用指定大小的块拷贝一个文件 并在拷贝的同时进行指定的转换 注意 指定数字的地方若以下列字符结尾 则乘以相应的数字 b 512 c 1 k 1024 w 2 参数注释 if 文件名 输入文件名 缺省为标准输入 即指定源文件 lt if
  • Java设计模式-迪米特法则

    迪米特法则 Low Of Demeter 定义 一个对象应该对其他对象保持最少的了解 问题由来 类与类之间的关系越密切 耦合度越大 当一个类发生改变时 对另一个类的影响也越大 解决方案 尽量降低类与类之间的耦合 自从我们接触编程开始 就知道
  • 【LeetCode】—— 二叉树进阶面试题

    一 根据二叉树创建字符串LeetCode606题 1 1 题目描述 空节点则用一对空括号 表示 而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对 示例 1 输入 二叉树 1 2 3 4 1 2 3 4 输出 1 2
  • 批量插入及数据库事务(三)

    五 批量插入 5 1 批量执行SQL语句 当需要成批插入或者更新记录时 可以采用Java的批量更新机制 这一机制允许多条语句一次性提交给数据库批量处理 通常情况下比单独提交处理更有效率 JDBC的批量处理语句包括下面三个方法 addBatc
  • 算法讲解四之滑动窗口

    文章目录 算法学习篇四 滑动窗口 声明 题目 长度最小的子数组 解法一 解法一思路 解法二 滑动窗口 解法二思路 拓展知识点 1 程序设计中 与 的使用 2 i 与 i的使用区别 说明 算法学习篇四 滑动窗口 声明 本文旨在记录自己学习算法
  • 使用python的selenium自动化登录获取cookie

    要爬取广点通广告平台数据 这平台居然没有提供开发用的API数据接口 登录是QQ登录 很复杂 不好抓取登录接口逻辑 于是就用这个 想录gif的不好录 文档 https www yiibai com selenium selenium webd