Python3: selenium 爬虫获取一卡通消费记录
1.预登陆
首先手工登陆一次,通过抓包工具或者浏览器控制台分析登陆过程
2.模拟登陆
通常来说简单的爬虫用requests就能搞定
但是这个登陆过程,几次跳转,技术不够,没搞定
尝试使用selenium模拟登陆
selenium:本来用于自动化测试,由于其几乎完全模拟浏览器操作,所以也常用于爬虫
导入seleniu,使用selenium打开浏览器
这里我选择的是Chrome浏览器
注意:使用前需要下载相应的浏览器驱动
查看chrome版本:地址栏输入,chrome://version
版本对照表:
chromedriver版本 | 支持的Chrome版本 |
---|---|
v2.41 | v67-69 |
v2.40 | v66-68 |
v2.39 | v66-68 |
v2.38 | v65-67 |
v2.37 | v64-66 |
v2.36 | v63-65 |
v2.35 | v62-64 |
v2.34 | v61-63 |
v2.33 | v60-62 |
v2.32 | v59-61 |
v2.31 | v58-60 |
v2.30 | v58-60 |
v2.29 | v56-58 |
v2.28 | v55-57 |
v2.27 | v54-56 |
v2.26 | v53-55 |
v2.25 | v53-55 |
v2.24 | v52-54 |
v2.23 | v51-53 |
v2.22 | v49-52 |
v2.21 | v46-50 |
v2.20 | v43-48 |
v2.19 | v43-47 |
v2.18 | v43-46 |
v2.17 | v42-43 |
v2.13 | v42-45 |
v2.15 | v40-43 |
v2.14 | v39-42 |
v2.13 | v38-41 |
v2.12 | v36-40 |
v2.11 | v36-40 |
v2.10 | v33-36 |
v2.9 | v31-34 |
v2.8 | v30-33 |
v2.7 | v30-33 |
v2.6 | v29-32 |
v2.5 | v29-32 |
v2.4 | v29-32 |
下载地址:https://npm.taobao.org/mirrors/chromedriver/
from selenium import webdriveroption = webdriver.ChromeOptions() option.add_argument('headless') # driver = webdriver.Chrome('/usr/local/bin/chromedriver') # 有头打开,这里是下载的driver地址 driver = webdriver.Chrome('/usr/local/bin/chromedriver',chrome_options=option) #无头打开,这里是下载的driver地址
有头无头
有头的是普通浏览器
无头的是没有界面的浏览器,速度更快
传入要登陆的URL地址
url = 'http://xxxxxxxxxx'driver.get(url)
浏览器审查元素,查看表单的'id'或者'classname'等用于定位
填写用户名,密码,并点击登陆
driver.find_element_by_id('username').send_keys('xxxxxxxxxx') driver.find_element_by_id('password').send_keys('xxxxxxxx') driver.find_element_by_class_name('dl_mian_middle_btn').click()
如果你是用的有头打开,那么你会看到系统启动了浏览器,并打开了网页,输入了账号密码,点下了登陆按钮
3.数据获取
学校比较懒,系统里除了一卡通的消费记录,啥都没有~~
所以接下来我们抓取一卡通消费记录
定位目标,点击查看
复制他的URL
打开这个URL
找到数据位置并输出
driver.get('http://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')page = driver.find_element_by_tag_name('body')print(page.text)
退出浏览器
driver.quit()
预计输出
完整代码
# -*- coding:utf-8 -*- from selenium import webdriveroption = webdriver.ChromeOptions() option.add_argument('headless') driver = webdriver.Chrome('/usr/local/bin/chromedriver') # 有头打开 # driver = webdriver.Chrome('/usr/local/bin/chromedriver',chrome_options=option) #无头打开 url = 'http://xxxxxxxxxxxx'def dl():driver.get(url)driver.find_element_by_id('username').send_keys('xxxxxxxx')driver.find_element_by_id('password').send_keys('xxxxxxxx')driver.find_element_by_class_name('dl_mian_middle_btn').click()driver.get('http://xxxxxxxxxxxxxxxxxx')page = driver.find_element_by_tag_name('body')print(page.text) if __name__ == '__main__':try:dl()finally:driver.quit()
转载于:https://www.cnblogs.com/IMWU/p/9534006.html
Python3: selenium 爬虫获取一卡通消费记录相关推荐
- python selenium爬虫代码示例_python3通过selenium爬虫获取到dj商品的实例代码
先给大家介绍下python3 selenium使用 其实这个就相当于模拟人的点击事件来连续的访问浏览器.如果你玩过王者荣耀的话在2016年一月份的版本里面就有一个bug. 安卓手机下载一个按键精灵就可 ...
- 一卡通消费记录管理系统(c语言实现)
一. 功能需求说明(必须采用结构体和动态链表实现) 消费记录存在文件fee.txt中,格式如下:每一条记录包括一个消费的交易日期.入账日期.交易额.交易后余额.交易类型.交易次数.交易地点. 查询搜索 ...
- Python3+Selenium爬虫实战:微博粉丝榜水分大揭秘
高能预警!分析到最后,我不得不感慨这个世界太真实了! 文中有大量代码,注重阅读体验的请在PC站打开!或者直接去我的个人博客(www.data-insights.cn)阅读! 一.微博粉丝榜:一潭深水 ...
- selenium爬虫获取自己的课表信息
方正教务系统做的还挺安全!!! 密码用rsa加密,还带了token防御 一开始,我尝试用 request.post()表单提交数据,没用,看了一下网络请求,表单提交了4个数据,如下图: 也就是说,我们 ...
- Python3原生爬虫获取熊猫直播某一分类下的主播人气并保存到Excel
import re import openpyxl from urllib import request# 断点调试class Spider:url = 'https://www.panda.tv/c ...
- python3半自动爬虫,获取风暴英雄官方壁纸
python3半自动爬虫获取风暴英雄官方壁纸 引(废)言(话) 动机与目标 我为什么会写这篇blog 我写这篇blog有什么用 干货 开始之前 导入模块 定义路径和UA 读取本地html文件 解析并提 ...
- 用Python脚本模拟登陆获取地铁一卡通的充值和消费记录
1. 思路 这几天尝试写了个脚本模拟登陆获取地铁一卡通的充值和消费记录,学习了不少新东西,总结下记录下来.整个流程大概这样,首先模拟登陆一卡通的查询网址,分析如何获取验证码,然后就是下载验证码并识别, ...
- [Python3网络爬虫开发实战] 7-动态渲染页面爬取-4-使用Selenium爬取淘宝商品
在前一章中,我们已经成功尝试分析Ajax来抓取相关数据,但是并不是所有页面都可以通过分析Ajax来完成抓取.比如,淘宝,它的整个页面数据确实也是通过Ajax获取的,但是这些Ajax接口参数比较复杂,可 ...
- # Python3微博爬虫[requests+pyquery+selenium+mongodb]
目录 Python3微博爬虫[requests+pyquery+selenium+mongodb] 主要技术 站点分析 程序流程图 编程实现 数据库选择 代理IP测试 模拟登录 获取用户详细信息 获取 ...
最新文章
- 2014/08/24——升级stepbystep修复tc不刷新问题并加入杭电bc
- 结对编程项目作业-设计文档
- 环境微生物期刊—Bioresource Technology
- 《互联网运营智慧》进展
- Nacos下载与安装-windows
- hdu 1022 Train Problem I(栈)
- Python文件上传功能简单实现
- 华为云DevCloud为开发者提供高效智能的可信开发环境
- 每日一题20180401-Linux
- php 上传加水印,PHP 图片上传加水印实例
- 利用CPUID 汇编指令(转载)
- python 生意参谋_电商 Python 抓取 生意参谋-访客数据
- 关于信息安全专业学习的一些看法
- 这48条人际关系准则,会真正提升你的社交情商
- 厉害了,Pandas表格还能五彩斑斓的展示数据,究竟是怎么做到的呢?
- 代码风格自动化(二)——husky + lint-staged
- Qt 下 按钮发声技术
- latch和DFF的区别和联系
- DRV8833/HR8833( 2A低电压双路刷式直流或单路双极步进PWM绕组电流调节/限制电机驱动器IC)
- 又现新模式,师徒贷骗局
热门文章
- 6 进攻退守之可转债及可交換债
- springboot thymeleaf 引入js
- java 比例计算器_java版计算器
- 哲学:苍蝇和蜜蜂的对话
- 中学计算机学科专业知识点,【高级中学大纲】《信息技术学科知识与教学能力》...
- 怎样减少企业中那些惊人的“无效工作”?
- 散光是怎么造成的以及如何进行测试诊断
- linux ntp时钟服务器地址_linux中ntp时钟服务器怎么配
- 八年测试,谈谈这么多年来对软件测试的一些感想与职业规划
- QQ移动端分享(主标题,副标题,分享图)可改