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

玄月指光 · 2017年10月30日 · 最后由 Albert Chen 回复于 2018年09月05日 · 4148 次阅读

使用 python + selenium + PhantomJS 爬取银行卡前 6 位数据


  • 在测试支付时需要对一些银行卡进行测试校验,遍历系统支持的银行卡列表,但是测试、研发提供的银行卡,并没有很多,可能只有部分卡,这个时候怎么办呢!
  • 可以通过一些爬虫,来获取到银行卡前 6 位数据
  • 爬虫要想获取到数据,首先要能找到对应的网站 URL 找寻好久才找到这个网站 http://www.chakahao.com/cardbin/chakahao_other.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 这里能拿到这个银行卡 的长度是多少,这样方便在测试时生成对应长度的银行卡

后记

  • 后面再补上生成银行卡的脚本
共收到 5 条回复 时间 点赞

哈哈哈,我上半年也爬过这个网。用 requests+beatifulsoup4 爬的,好卡这个网站。

谷歌的 headless 感觉比 PhantomJS 好用一点啊,哈哈,个人意见

恒温 回复

项目中需要遍历测试银行卡的卡号,所以才爬这个网站的

百度文库里面有个 Excel,数据都是现成的,搜卡 bin

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册