爬虫日常练习-selenium登录12306

这篇具有很好参考价值的文章主要介绍了爬虫日常练习-selenium登录12306。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

页面分析

今天给大家分享一个简单案例。讲讲如何自动登录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')

我们可以对比下两个新加参数的作用
爬虫日常练习-selenium登录12306爬虫日常练习-selenium登录12306可以明显看出下面这段编码的作用是为了规避页面上的自动化控制显示

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

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

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

爬虫日常练习-selenium登录12306爬虫日常练习-selenium登录12306
首先分析页面。我们第一步做的操作应该是点击账号密码登录,然后在点击用户名框输入账号。再点击密码处输入密码,最后点击登录按钮。

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

不同于平时用的etree。在selenium的编码中大部分的点击,传参等动作需要通过其内部的find_element函数来进行xpath的定位。
爬虫日常练习-selenium登录12306直接在页面右键检查,复制其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()

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

由于今天我还有其他的学习安排,就先只给大家分享到这里。明天在和大家聊聊如何绕过这块验证。拜拜兄弟们,记得点个赞哈。
爬虫日常练习-selenium登录12306文章来源地址https://www.toymoban.com/news/detail-449305.html

到了这里,关于爬虫日常练习-selenium登录12306的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 爬虫练习:Selenium使用案例

    一、获取某电商平台商品信息 二、获取某网站小说信息 版权声明和免责声明 本博客提供的所有爬虫代码和相关内容(以下简称“内容”)仅供参考和学习之用。任何使用或依赖这些内容的风险均由使用者自行承担。我(博客所有者)不对因使用这些内容而产生的任何直接或

    2024年04月14日
    浏览(33)
  • Python爬虫教程:Selenium模拟登录

    Selenium(本文基于python3.8)是一个功能强大的自动化测试工具,它可以用于模拟用户在浏览器中的行为,比如点击、输入、滚动等等,也可用于模拟登录网站并进行爬虫操作。本教程将详细介绍如何使用Python编写一个模拟登录地爬虫,使用XPath等多种元素匹配方法。 在开始之

    2024年02月04日
    浏览(49)
  • 【爬虫】5.4 Selenium 实现用户登录

    目录 任务目标 创建模拟网站 创建服务器程序  键盘输入动作 鼠标点击动作 编写爬虫程序 Selenium 查找的 HTML 元素是一个 WebElemen t对象, 这个对象不但可以获取元素的属性值,而且还能执行一 些 键盘输入send_keys() 与 鼠标点击click() 的动作 我们设计一个实现 用户登录并爬取

    2024年02月13日
    浏览(34)
  • Python爬虫-使用Selenium模拟百度登录

        前面我已经安装好了Selenium并模拟成功了一下打开百度页面并进行查询,让我这个python初学者信心倍增,今天再来试一试百度登录 把打开百度的代码放到构造方法中 ps:那个文件目录是用于后面滑块验证图片保存的。 点击右上角的“登录”按钮,打开登录框, 代码如下:

    2024年02月06日
    浏览(57)
  • python爬虫-使用selenium自动登录微博

    环境准备:anaconda、pycharm编辑器、chromedriver(记得下载) 首先查看本地anaconda的python环境和selenium版本号(不同版本的api接口可能不同) 输出 我的python版本是3.11.3,所以我默认下载的selenium版本号是 selenium 4.11.2 自动登录的python脚本代码如下: 最后运行这个脚本文件即可自动登录微

    2024年02月11日
    浏览(39)
  • python爬虫selenium被检测处理(适用淘宝登录)

    1.增加这个是防止检测是webdriver谷歌驱动调起的请求,通用大部分 2.修改chromedriver里面的内容: 用Notepad++打开chromedriver文件,查找  $cdc_  修改这个数值。 3.修改User-Agent的值,如果你长时间使用相同 的User-Agent:可能会被检测到加入黑名单, 这时候你修改User-Agent值就可能绕开

    2024年02月09日
    浏览(44)
  • 爬虫笔记--Selenium实现有验证码网站模拟登录

    代码如下: 一点说明: 安利个巨好用的识别验证码的库 ddddocr gitHub:https://github.com/sml2h3/ddddocr 可能会在版本上遇到问题,我的报错参考这篇文档解决:https://blog.csdn.net/zhuchengchengct/article/details/124854199 我用的版本作为参考:python是3.9.13,ddddocr是1.4.2 如有问题,欢迎大家批评

    2024年02月16日
    浏览(44)
  • python+selenium实现12306抢票

    1、要先下载相关的包,selenium、interval。最好使用国内清华源 2、还要下载对应浏览器的驱动: 2.1 安装chromedriver 谷歌浏览器驱动的网址为link 注意:谷歌浏览器的驱动版本要匹配谷歌浏览器的版本 随机点击一个版本: 点击notes.txt 2.2 安装FireFox驱动(我用的是这个) 火狐驱动

    2024年02月01日
    浏览(50)
  • 28. 实战:基于selenium实现12306自动购票

    目录 前言 目的 思路 代码实现 1. 进入登录界面,输入账号密码 2. 点击登录按钮,完成滑块验证 3. 在个人中心点击购票,跳转 4. 输入出发地、目的地,从控制台输入得到 5. 文本框输入出发日 6. 若是学生票则切换票型 7. 点击查询 8. 定位预定按钮,点击跳转购票页面 9. 选择

    2024年01月22日
    浏览(82)
  • 【java爬虫】使用selenium通过加载cookie的方式跳过登录

    前言 相信很多人在使用selenium的时候都有一个困惑,就是每一次打开的浏览器实例都是不带cookie的,当有一些页面需要登录操作的时候可能就会比较麻烦,每次都需要手动登录。 其实会造成这个问题的原因是每次打开的浏览器都不会加载本地的cookie,相当于环境被隔离了。

    2024年04月12日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包