Python3: selenium 爬虫获取一卡通消费记录

1.预登陆

 

首先手工登陆一次,通过抓包工具或者浏览器控制台分析登陆过程

 

2.模拟登陆

通常来说简单的爬虫用requests就能搞定

但是这个登陆过程,几次跳转,技术不够,没搞定

尝试使用selenium模拟登陆

 

selenium:本来用于自动化测试,由于其几乎完全模拟浏览器操作,所以也常用于爬虫

 

导入seleniu,使用selenium打开浏览器

这里我选择的是Chrome浏览器

注意:使用前需要下载相应的浏览器驱动

   查看chrome版本:地址栏输入,chrome://version

   版本对照表:

 

chromedriver版本支持的Chrome版本
v2.41v67-69
v2.40v66-68
v2.39v66-68
v2.38v65-67
v2.37v64-66
v2.36v63-65
v2.35v62-64
v2.34v61-63
v2.33v60-62
v2.32v59-61
v2.31v58-60
v2.30v58-60
v2.29v56-58
v2.28v55-57
v2.27v54-56
v2.26v53-55
v2.25v53-55
v2.24v52-54
v2.23v51-53
v2.22v49-52
v2.21v46-50
v2.20v43-48
v2.19v43-47
v2.18v43-46
v2.17v42-43
v2.13v42-45
v2.15v40-43
v2.14v39-42
v2.13v38-41
v2.12v36-40
v2.11v36-40
v2.10v33-36
v2.9v31-34
v2.8v30-33
v2.7v30-33
v2.6v29-32
v2.5v29-32
v2.4v29-32

  下载地址:https://npm.taobao.org/mirrors/chromedriver/

  

  

from selenium import webdriver

option = 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 webdriver

option = 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值