爬虫日常练习-selenium登录12306

2023-11-15

前言

hello,好兄弟们。经过前面几篇文章后,想必小伙伴们对于简单的网页文本爬取,图片爬取类的内容已经熟练掌握了。今天我们开始练习一个新的内容:selenium。有关这一块的基础知识网上太多了,我们作为进阶的练习文章就不在这里从基础说起了。直接上实际案例,与大家分享在设计代码时的思路
在这里插入图片描述

页面分析

今天给大家分享一个简单案例。讲讲如何自动登录12306网站
在这里插入图片描述老规矩,先分析页面。我们在观察12306的登录界面时首先注意到url,这个就是我们第一步要发送请求的链接​https://kyfw.12306.cn/otn/resources/login.html

获取url后首先观察到页面上有两个输入框,这里就是参数传递给服务器的地方,先猜测这里是表单发送​。自动化就是要去模仿人类的动作来对网站发送请求,所以我们先设想下正常的操作流程:第一步输入账号密码,点击登录。

那么我们如何通过爬虫来模拟人的操作行为呢。这个时候就要借助selenium了。

代码设计

开始设计第一部分的代码​
首先就是要引入selenium库,刚刚学习完基础知识的同学对这一步肯定不陌生,代码如下

from selenium.webdriver import Chrome

if __name__ == '__main__':
    web = Chrome()
    web.get('https://kyfw.12306.cn/otn/resources/login.html')

借用Chrome插件模拟Chrome浏览器,运行查看效果。做到这一步的同学会发现,浏览器打开后迅速的关闭,这个时候要对代码做些改动,避免程序运行结束后浏览器立即退出,并且规避掉浏览器顶端显示的收到自动化程序控制

from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
if __name__ == '__main__':
    opt = Options()
    opt.add_experimental_option('excludeSwitches', ['enable-automation'])
    opt.add_experimental_option('detach', True)
    web = Chrome(options=opt)
    web.get('https://kyfw.12306.cn/otn/resources/login.html')

我们可以对比下两个新加参数的作用
在这里插入图片描述在这里插入图片描述可以明显看出下面这段编码的作用是为了规避页面上的自动化控制显示

opt.add_experimental_option('excludeSwitches', ['enable-automation'])

而另一段就是为了规避我们通过程序打开的浏览器在程序运行结束后立马退出​

解决完自动打开浏览器的操作后,就要开始对参数传递的问题动手了

在这里插入图片描述在这里插入图片描述
首先分析页面。我们第一步做的操作应该是点击账号密码登录,然后在点击用户名框输入账号。再点击密码处输入密码,最后点击登录按钮。

因此直接右键检查账号登录就可以获取到此处的xpath路径。可能有的同学会疑惑,不是说elements里面的路径不可信不能直接用吗。这就是selenium的方便之处了,由于它是模拟人操作浏览器的行为,因此它获取到的源码正是我们平时所见的经过处理后得到的elements里面的源码,可以直接利用,大大提高了爬取的便捷性和效率。

不同于平时用的etree。在selenium的编码中大部分的点击,传参等动作需要通过其内部的find_element函数来进行xpath的定位。
在这里插入图片描述直接在页面右键检查,复制其xpath路径

    login_choice = web.find_element(By.XPATH, '//*[@id="toolbar_Div"]/div[2]/div[2]/ul/li[1]')
    # 点击账号密码登录方式
    login_choice.click()
    user = web.find_element(By.XPATH, '//*[@id="J-userName"]')
    pwd = web.find_element(By.XPATH, '//*[@id="J-password"]') 
    # 点击账号模块并传入参数
    user.click()
    user.send_keys('')
    # 密码
    pwd.click()
    pwd.send_keys('')
        # 定位到登录按钮并点击
    web.find_element(By.XPATH,'//*[@id="J-login"]').click()

在这里插入图片描述可以看到所有参数全部传入进去并点击了登录按钮,如预期所料出现了验证模块。到了这一步大家应该也稍微熟悉了自己所学的操作了,大家也可以对一些经典的网站先进行参数传入操作来练练手感。

由于今天我还有其他的学习安排,就先只给大家分享到这里。明天在和大家聊聊如何绕过这块验证。拜拜兄弟们,记得点个赞哈。
在这里插入图片描述

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

爬虫日常练习-selenium登录12306 的相关文章

随机推荐

  • 日常——js

    1 闭包 1 1 概念 闭包指 有权访问另一个函数作用域中变量的函数 1 2 优缺点 优点 闭包函数中的变量不会随着闭包函数销毁而销毁 而是要等到还在使用它的函数销毁时才会销毁 缺点 频繁使用闭包会造成内存泄漏 闭包 会将它的外部函数的作用
  • 如何获取 两个日期之间的 天数

    获取两个日期对应的时间戳 1 然后时间戳的差 24 60 60
  • 最大子序列和及序列起始位置-全负数也适用-O(N)时间复杂度

    有一个很经典的题目 给定一个整数组 求连续子序列的最大和 整数为正 负 0皆有可能 先考整数不是全负的情况 和最大的连续子序列 必然是以一个非负数开头 因为和加上一个负数 和变小 此外 和为负数的连续子序列 也不可能是目标子序列的开头的一段
  • 申请苹果个人开发者账号流程

    因为经常有人问我怎么申请苹果开发者账号 这里记录下来方便使用 准备 1 一个苹果账号 Apple ID 2 一张开通visa或master功能的信用卡 3 身份证正反面照片 4 一部苹果手机 5 一个手机号 申请流程 一 先注册一个苹果账号
  • python报错:ImportError: cannot import name ‘calinski_harabaz_score‘ from ‘sklearn.metrics‘解决方案

    报错 ImportError cannot import name calinski harabaz score from sklearn metrics 解决方案 harabaz 改为harabasz 成功解决
  • idea强制回退gitlab分支代码

    1 如果合并分支出错 执行以下两步操作 1 切换到本地分支 找到要回退到的点 2 找到本地该项目的文件目录 空白处右键选择 git bash here 将本地分支代码强推到远程库 执行命令符 git push f origin develo
  • 1.MySQL数据库的基本操作

    数据库操作过程 1 用户在客户端输入 SQL 2 客户端会把 SQL 通过网络发送给服务器 3 服务器执行这个 SQL 把结果返回给客户端 4 客户端收到结果 显示到界面上 数据库的操作 这里的数据库不是代表一个软件 而是代表一个数据集合
  • Navicat 15安装教程,强烈推荐收藏!

    Navicat是一款轻量级的用于MySQL连接和管理的工具 非常好用 使用起来方便 简洁 下面讲讲其安装的过程 1 进入navicat官网 选择Navicat for MySQL 然后点击进行下载即可 官网连接 http www navic
  • VSCode+Qt+MinGW开发环境搭建

    VSCode Qt MinGW开发环境搭建 概述 VSCode扩展性很强 插件机制让其具备不断演进的潜力 适合作为稳定的开发工具 VSCode Qt开发环境的搭建需要依赖于以下工具 VSCode Qt 其中Qt需要安装MinGW编译工具 V
  • 【python-数据分析】笔记1

    数据库vs 仓库 数据库 gt 业务存储 针对应用 仓库 gt 主题存储 针对分析 数据来源 Kaggle 阿里云天池 在python console输入 import pandas as pd df pd read csv data HR
  • 理解javascript的同步与异步模式

    你可能知道 Javascript语言的执行环境是 单线程 single thread 所谓 单线程 就是指一次只能完成一件任务 如果有多个任务 就必须排队 前面一个任务完成 再执行后面一个任务 以此类推 这种模式的好处是实现起来比较简单 执
  • Leetcode 第 43 场双周赛题解(Python)

    Leetcode 第 43 场双周赛题解 周赛日期 2020 01 09 题目1 1716 计算力扣银行的钱 难度 简单 Hercy 想要为购买第一辆车存钱 他 每天 都往力扣银行里存钱 最开始 他在周一的时候存入 1 块钱 从周二到周日
  • 《一个操作系统的实现》读书笔记--第二章--搭建工作环境

    一 熟悉Bochs虚拟机 第一章我们使用虚拟机VMware运行了该最最简单的操作系统 由于VMware虚拟机不具备调试操作系统的功能 因此对于开发操作系统的程序员来说 VMware是不完备的 故本章介绍另一款虚拟机Bochs 下面我们就介绍
  • python 连续比较_python等值和大小比较

    等值 大小比较 在python中 只要两个对象的类型相同 且它们是内置类型 字典除外 那么这两个对象就能进行比较 关键词 内置类型 同类型 所以 两个对象如果类型不同 就没法比较 比如数值类型的数值不能和字符串类型的数值或字母比较 对于py
  • 计算机图形学GAMES101(十五)光线追踪(蒙特卡洛积分与路径追踪)

    本节涉及内容 蒙特卡罗积分 路径追踪 蒙特卡罗积分 蒙特卡罗积分的核心思想还是求一个不规则图形的面积 它的做法是 首先在a和b之间找一个值xi然后求f x 接着以f x 为高 ab为宽求矩形的面积 最后将所有的值求平均 当采样数量xi趋于无
  • C++斩题录

    个人主页 平行线也会相交 欢迎 点赞 收藏 留言 加关注 本文由 平行线也会相交 原创 收录于专栏 手撕算法系列专栏 LeetCode 本专栏旨在提高自己算法能力的同时 记录一下自己的学习过程 希望对大家有所帮助 希望我们一起努力 成长 共
  • 华南技术栈CNN+Bilstm+Attention

    我的目标适用于文本分类 这里有一个 技术栈完全一样但是目标不一样的应该可以参考 现在的情况 2022年7月6日21 16 04已解决 换成了CPU 因为电脑太破旧了 cuda跟不上pytorch官网 已安装 cuda cudnn anaco
  • 兼阅万分享:适合上班族下班时间做的6项兼职小副业

    你的收入还在8000以下 车贷 房贷 孩子学费 兴趣班费用要交 开车油门踩深点 都会心疼油费 每个月的压力都很大 白天要干活 有没有适合晚上下班后做的兼职或者副业 今天推荐6项 可以保存下来 如果真的撑不住了 挑一个干 虽然发不了大财 但改
  • python提高办公效率-【纯干货】提高Python运行效率的小窍门

    Python是一门优秀的语言 它能让你在短时间内通过极少量代码就能完成许多操作 不仅如此 它还轻松支持多任务处理 比如多进程 不喜欢Python的人经常会吐嘈Python运行太慢 但是 事实并非如此 尝试以下六个窍门 来为你的Python应
  • 爬虫日常练习-selenium登录12306

    文章目录 前言 页面分析 代码设计 前言 hello 好兄弟们 经过前面几篇文章后 想必小伙伴们对于简单的网页文本爬取 图片爬取类的内容已经熟练掌握了 今天我们开始练习一个新的内容 selenium 有关这一块的基础知识网上太多了 我们作为