TA的每日心情 | 无聊 2024-9-27 10:07 |
---|
签到天数: 62 天 连续签到: 1 天 [LV.6]测试旅长
|
在测试支付时需要对一些银行卡进行测试校验,遍历系统支持的银行卡列表,但是测试、研发提供的银行卡,并没有很多,可能只有部分卡,这个时候怎么办呢!可以通过一些爬虫,来获取到银行卡前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
这里能拿到这个银行卡 的长度是多少,这样方便在测试时生成对应长度的银行卡
|
|