使用 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
这里能拿到这个银行卡 的长度是多少,这样方便在测试时生成对应长度的银行卡
:victory:
页:
[1]