联行号查询记录
联行号定义
银行联行号就是一个地区银行的唯一识别标志。用于人民银行所组织的大额支付系统\小额支付系统\城市商业银行银行汇票系统\全国支票影像系统(含一些城市的同城票据自动清分系统)等跨区域支付结算业务。由12位组成:3位银行代码+4位城市代码+4位银行编号+1位校验位。。
联行号查询(官方可靠)
浙商银行、河北银行有验证码,果断放弃。。。。
中原银行无验证码,页面直接选择银行类别、地区码即可查询,经测试,通过http请求,不加地区码可以查询全量(大行不行数据量太大。502。。。)
爬取关键代码(go)
//银行结构定义
type Bank struct {
Lname string
Tel string
Cls_code string
Drec_code string
City_code string
Bank_code string
EFFDATE string
}
//银行类别定义
bankTypeMap := map[string]string{
"102":"中国工商银行",
"103":"中国农业银行",
"104":"中国银行",
"105":"中国建设银行",
"201":"国家开发银行",
"202":"中国进出口银行",
"203":"中国农业发展银行",
"301":"交通银行",
"302":"中信银行",
"303":"中国光大银行",
"304":"华夏银行",
"305":"中国民生银行",
"306":"广发银行",
"307":"平安银行",
"308":"招商银行",
"309":"兴业银行",
"310":"上海浦东发展银行",
"313":"城市商业银行",
"314":"农村商业银行",
"315":"恒丰银行",
"317":"农村合作银行",
"318":"渤海银行",
"319":"徽商银行",
"320":"村镇银行",
"321":"重庆三峡银行",
"322":"上海农村商业银行",
"323":"民营银行",
"325":"上海银行",
"326":"中信百信银行",
"401":"城市信用社",
"402":"农村信用联社",
"403":"中国邮政储蓄银行",
"501":"汇丰银行",
"502":"东亚银行",
"503":"南洋商业银行",
"504":"恒生银行",
"505":"中国银行(香港)",
"506":"集友银行",
"509":"星展银行(香港)",
"510":"永亨银行",
"512":"永隆银行",
"513":"大新银行(中国)",
"523":"国泰世华商业银行",
"527":"兆丰银行",
"531":"美国花旗银行",
"532":"美国银行",
"533":"美国摩根大通银行",
"561":"日本三菱东京日联银行",
"562":"日本日联银行",
"563":"日本三井住友银行",
"564":"日本瑞穗实业银行",
"565":"日本山口银行",
"591":"韩国外换银行",
"593":"韩国友利银行",
"594":"韩国产业银行",
"595":"新韩银行",
"596":"韩国中小企业银行",
"597":"韩亚银行(中国)有限公司",
"600":"浦发硅谷银行",
"616":"首都银行",
"621":"华侨永亨银行(中国)有限公司",
"622":"大华银行",
"623":"新加坡星展银行",
"631":"盘古银行",
"641":"奥地利中央合作银行",
"651":"比利时联合银行",
"661":"荷兰银行",
"662":"荷兰商业银行",
"671":"渣打银行",
"681":"瑞典商业银行",
"682":"瑞典北欧斯安银行有限公司",
"691":"法国兴业银行",
"692":"法国巴黎银行",
"694":"法国东方汇理银行",
"695":"法国外贸银行",
"711":"德国德累斯登银行",
"712":"德意志银行",
"713":"德国商业银行",
"714":"德国西德银行",
"715":"德国巴伐利亚州银行",
"717":"中德住房储蓄银行",
"741":"瑞士信贷银行",
"752":"加拿大蒙特利尔银行",
"761":"澳大利亚和新西兰银行集团",
"775":"华美银行中国有限公司",
"781":"厦门国际银行",
"782":"法国巴黎银行(中国)",
"785":"华商银行",
"786":"青岛国际银行",
"787":"华一银行",
"901":"中央结算公司",
"909":"银行间清算所",
"001":"央行"}
//循环爬取
//test
for key, _ := range bankTypeMap {
fmt.Println(key)
//拉取联行号
//url := "http://www.zybank.com.cn/eportal/ui?moduleId=0e014749013b439aab3f22c794bd61ea&struts.portlet.action=/portlet/cnaps-front!queryCnaps.action&areacode=" + city + "&clscode=" + key;
url := "http://www.zybank.com.cn/eportal/ui?moduleId=0e014749013b439aab3f22c794bd61ea&struts.portlet.action=/portlet/cnaps-front!queryCnaps.action&clscode=" + key;
fmt.Println(url)
resp, err := http.Get(url)
if err != nil {
fmt.Println("拉取失败", key)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
//fmt.Println(string(body))
var unionNoList []Bank
json.Unmarshal([]byte(body), &unionNoList)
for _, item := range unionNoList {
//Lname string
//Tel string
//Cls_code string
//Drec_code string
//City_code string
//Bank_code string
//EFFDATE string
ln := item.Lname + "|" + item.Tel + "|" + item.Cls_code + "|" + item.Drec_code + "|" + item.City_code + "|" + item.Bank_code + "|" + item.EFFDATE + "\n";
fmt.Println(ln)
//转存文件
err = writeFile("G:\\go_workspace\\src\\learning-go\\bankNo.txt", []byte(ln), os.ModeAppend)
if err != nil {
panic(err)
}
}
}
//写文件
func writeFile(filename string, data []byte, perm os.FileMode) error {
f, err := os.OpenFile(filename, os.O_APPEND, perm)
if err != nil {
return err
}
n, err := f.Write(data)
if err == nil && n < len(data) {
err = io.ErrShortWrite
}
if err1 := f.Close(); err == nil {
err = err1
}
return err
}
补充个方便的
民生银行 联行号,内容为txt格式,字段不详,但可以猜测到,需要自行处理一下:
http://www.cmbc.com.cn/download/lianhang.txt