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 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()
  

 

 

 

 

  

posted @ 2018-08-25 14:17  IMWU  阅读(801)  评论(0编辑  收藏  举报