基于Selenimu的购票脚本

news/2024/9/23 23:40:17/

目录

  • 1.Selenium 简介
  • 2.Selenium基本使用
  • 3.购票实战

1.Selenium 简介

Selenium 是一个用于自动化网页交互的开源工具。它可以通过模拟用户的行为(如点击、输入文本、滚动页面等)来自动化网页浏览器的操作。本次购票脚本使用selenimu4.21。

  • 是一个Web自动化测试工具,可以直接运行在浏览器上
  • 支持所有主流的浏览器
  • 可以根据我们的指令,让浏览器自动加载页面,获取需要的数据,基础页面截图等
  • 非Python标准模块,安装才能使用

2.Selenium基本使用

创建 WebDriver 实例以控制浏览器:

python">from selenium import webdriver
#指定 WebDriver 的路径
driver_path = '/path/to/chromedriver'
#创建 WebDriver 实例
driver = webdriver.Chrome(executable_path=driver_path)

使用 get 方法打开一个网页:

python">driver.get('http://example.com')

在浏览器中进行前进和后退:

python">driver.back()  # 后退
driver.forward()  # 前进

元素定位:

python">element = driver.find_element() 
元素等待:
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.ID, 'some-id')))

对页面元素执行操作,如点击、输入文本、获取元素属性等:

python">element.click()  # 点击
element.send_keys('some text')  # 输入文本
element_text = element.text  # 获取元素文本

捕获页面截图或录制视频:

python">driver.get_screenshot_as_file('screenshot.png')  # 截图
driver.save_screenshot('screenshot.png')  # 另一种截图方法
#录制视频需要使用第三方库,如 pyvirtualdisplay

管理浏览器的 Cookies:

python">driver.get_cookies()  # 获取所有 Cookies
driver.add_cookie({'name': 'cookie_name', 'value': 'cookie_value'})  # 添加 Cookie
driver.delete_cookie('cookie_name')  # 删除 Cookie

结束 WebDriver 会话并清理资源:

python">driver.quit()  # 关闭浏览器并结束 WebDriver 会话

3.购票实战

先爬取车站代号,用于出发站和目的站

python">#用于爬取车站代号
import  requests
import  re
import  openpyxl
def get_station():url='https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9151'headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36'}resp=requests.get(url,headers=headers)resp.encoding='utf-8'#print(resp.text)stations=re.findall('([\u4e00-\u9fa5]+)\|([A-Z]+)',resp.text)#print(stations)return  stations #stations是一个列表def save(lst):wb=

http://www.ppmy.cn/news/1464206.html

相关文章

创建一个乘法练习题生成器 using Java

在教育软件和家庭学习辅助工具中,自动生成练习题是一种常见的需求,它能够帮助学生通过大量练习来巩固数学基础概念。本文将介绍如何使用Java编程语言创建一个简单的乘法练习题生成器,该程序不仅能够随机生成乘法题目,还能保证输出…

企业如何安全的使用U盘

问题的背景: U盘(USB闪存盘)的优点主要包括: 便携性:U盘体积小、重量轻,便于携带,可以轻松地在不同设备间传输数据。高速传输:相比传统机械硬盘,U盘的读写速度更快&…

TC3xx分析--如何提高系统运行效率(1)

目录 1.Tricore寻址模式 2.lsl链接文件Section分析 3.小结 1.Tricore寻址模式 今天聊个好玩的事情。 之前ARM培训的时候,他们对于函数形参的先后顺序、数据类型、对齐方式等等做了介绍,详细分析了上述操作不同写法对于CPU的通用寄存器使用效率上的影…

❤【纯干货】Matplotlib总结,任何项目都用得到呦❤

Matplotlib 在很多人眼里是无敌的存在,而且可以说是无敌的存在。 走过数据科学的路,路上必然有Matplotlib 的风景在你周围。 如果同一个项目,你的用了matplotlib 不仅有基本图形、定制化图形、多个坐标轴、3D绘图,还有动态交互绘…

js中金额进行千分以及toFixed()保留两位小数丢失精度的问题

1、金额进行千分 function commafy(num) { if ((num "").trim() "") { return ""; } if (isNaN(num)) { return ""; } num num ""; if (/^.*\..*$/.test(num)) { const pointIndex num.lastIndexOf("."); co…

MiniPCIe/SATA双用插槽无法识别minipcie模块怎么回事!

在计算机和嵌入式系统设计中,MiniPCIe/SATA双用插槽作为一种高度集成的解决方案,提供了极大的灵活性与扩展能力。它不仅能够支持MiniPCIe接口的无线网卡、固态硬盘控制器等模块,还能适应SATA接口的硬盘或固态存储设备,大大丰富了系统配置的可能性。尽管设计初衷良好,但在实…

关于基础的流量分析(1)

1.对于流量分析基本认识 1)简介:网络流量分析是指捕捉网络中流动的数据包,并通过查看包内部数据以及进行相关的协议、流量分析、统计等来发现网络运行过程中出现的问题。 2)在我们平时的考核和CTF比赛中,基本每次都有…

Web前端三大主流框架

Web前端三大主流框架,就像是建房子用的三种超级工具箱,让开发者能更快更好地搭建漂亮的网页。这三大框架分别是Angular、React和Vue,我们一个个来了解: 1. Angular: Angular像是一个全能型的建筑套装,里…