vlambda博客
学习文章列表

爬虫爬取成都地区银行联行号并写入mysql数据库


青苗补偿费是指被征用的土地,有正在生长的农作物,应给予被征者农作物补偿的费用。


输电工区和财务部就经常干青苗赔付转账的事情,需要汇总以下信息并形成表格:姓名、账号、开户银行、联行号、通道费用。


通过OCR技术,姓名可以从身份证复印件提,账号、开户行可以从银行卡复印件提,通道费用可以从赔付表中的小写和大写进行交叉验证,唯一要解决的是这个联行号问题,如果能够解决,那么这个工作就可以让人工智能自己干了。


平时员工都是通过百度一个一个银行手动搜索联行号,太费精力了,我查了一下成都地区的银行,不过也就1509个,用爬虫把他们全部爬下来,存入数据库,这个问题就解决了。


整个办公自动化场景经过我们的拆解,唯一的难点就是爬取银行联行号并存入数据库等待调用。


下面我们就手撸爬虫和数据库代码。


安装mysql这个步骤网上遍地都是,此处省略。


步骤一:导入必要的库

import pymysqlimport csvfrom bs4 import BeautifulSoupimport requests


步骤二:爬取数据存入csv文件打开看下是不是自己想要的数据


找到对应的网页点f12分析一下html的结构就知道要爬的数据从哪个位置取。


爬虫爬取成都地区银行联行号并写入mysql数据库


file = open('numbank.csv', 'w', newline='')csvwriter =csv.writer(file)listbank=[]
header={'user-agent':'Mozilla/5.0(windows NT 10.0;WOW64)AppleWebkit/537.36(KHTML,like Gecko)chrome/63.0.xxxx.xxx Safari/537.36'}
for i in range (1,39): url='http://www.5cm.cn/bank/chengdu/'+str(i)+'/' html=requests.get(url, headers=header).text soup=BeautifulSoup(html, 'lxml') banklist = soup.find_all('tr')[1:]
    for row in banklist: banknum =row.find_all('td')[0].text bankname =row.find_all('td')[1].text listbank.append([banknum,bankname])
csvwriter.writerows(listbank)file.close


打开numbank.csv文件,确认过眼神,就是我们要的数据。


爬虫爬取成都地区银行联行号并写入mysql数据库


步骤三:将我们爬下来的数据存入数据库备用


db = pymysql.connect(host='localhost', user='root',                     password='密码这辈子都是不可能告诉你的', db="TESTDB", port=3306, charset='utf8')
cursor = db.cursor()
cursor.execute("DROP TABLE IF EXISTS 银行联行号")
sql = """ create table 银行联行号( 行号 CHAR(20) NOT NULL, 名称 CHAR(100) NOT NULL) """
try: cursor.execute(sql) print("创建数据库成功")except Exception as e: print("创建数据库失败:case%s" % e)
for i in range(len(listbank)): sql1 = """ insert into 银行联行号( 行号, 名称)value('%s','%s') """ % ( listbank[i][0], listbank[i][1])
try: cursor.execute(sql1) db.commit() except: cursor.rollback() print('写入失败')
cursor.close()db.close()print('写入成功!')


打开navicat连接到mysql数据库查看,所有数据已全部存入。



请叫我数据库爬虫小天才,我们下期真实应用场景再见。