博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python3: selenium 爬虫获取一卡通消费记录
阅读量:4538 次
发布时间:2019-06-08

本文共 2538 字,大约阅读时间需要 8 分钟。

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

你可能感兴趣的文章
[SCOI2010]生成字符串
查看>>
JLOI2015 城池攻占
查看>>
在 Azure 虚拟机上快速搭建 MongoDB 集群
查看>>
跑步运动软件调研
查看>>
搭建ntp时间服务器 ntp - (Network Time Protocol)
查看>>
35. Search Insert Position
查看>>
awk使用
查看>>
ASP.NET Razor 视图引擎编程参考
查看>>
Vue 基础篇
查看>>
malloc_free_new_delete
查看>>
Python中的open和codecs.open
查看>>
开发Servlet的方法(2)
查看>>
asp.net mvc 伪静态添加
查看>>
EA类图与代码同步
查看>>
Android Studio 智能感知无效
查看>>
javascript 日常
查看>>
让插件帮你优化代码
查看>>
ng 动态的生成option。
查看>>
ORACLE-12C-RAC INSTALL
查看>>
自定义引用类型的Enumerable.Union调用(原创)
查看>>