海鸥一飞 发表于 2018-2-7 15:39:02

使用 selenium 爬取 测试银行卡需要的数据

   在测试支付时需要对一些银行卡进行测试校验,遍历系统支持的银行卡列表,但是测试、研发提供的银行卡,并没有很多,可能只有部分卡,这个时候怎么办呢!可以通过一些爬虫,来获取到银行卡前6位数据
爬虫要想获取到数据,首先要能找到对应的网站URL 找寻好久才找到这个网站 http://www.chakahao.com
/cardbin/chakahao_other.html ***
   分析下网站的规则


      网站显示的都是银行卡 6位开头,都是在一个div标签下面,先打开几个链接看看
      http://www.chakahao.com/cardbin/html/620082.html
      http://www.chakahao.com/cardbin/html/622691.html
      http://www.chakahao.com/cardbin/html/622692.html
      拿到卡号信息的规则,明白了银行卡号的数字变化在 .html 前面几位数字,就好办了
      使用 selenium 的 PhantomJS 驱动

      selenium PhantomJS 驱动的安装方法,请自行百度安装
      PhantomJS 地址 http://phantomjs.org/
      代码如下
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


driver = webdriver.PhantomJS()
wait = WebDriverWait(driver, 10)

def open_bank_url():
    print("打开银行页面")
    try:
      driver.get('http://www.chakahao.com/cardbin/chakahao_other.html')
      driver.maximize_window()
      text = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'body>center>div:nth-child(4)')))
      str1 = text.text.split(' ')
      # print(str1)
      for i in str1:
            # print(i)
            url = 'http://www.chakahao.com/cardbin/html/{0}.html'.format(i)
            driver.get(url)
            bank = driver.find_element_by_css_selector(".chalist > p:nth-child(3)")
            bank_number = driver.find_element_by_css_selector(".chalist > p:nth-child(5)")
            f = open("bank_text.txt", 'a')# 存储爬取到的银行卡的数据
            print(bank.text, bank_number.text, file=f)

      # driver.quit()
    except TimeoutError:
      print("NO")

open_bank_url()      爬取结果


      说明

      str1 = text.text.split(' ') 这里的text 是拿到页面所有的银行卡前6位数字,但是这样还不知道 这个
银行卡的所属银行是什么
      bank 获取的结果--> 433670开头的银行卡是中信银行贷记卡
      bank_number 获取的结果 --> 433670开头的银行卡号数字长度为16位 如:433670xxxxxxxxxx
这里能拿到这个银行卡 的长度是多少,这样方便在测试时生成对应长度的银行卡



梦想家 发表于 2018-5-14 16:52:15

:victory:
页: [1]
查看完整版本: 使用 selenium 爬取 测试银行卡需要的数据