爬虫爬取成都地区银行联行号并写入mysql数据库
青苗补偿费是指被征用的土地,有正在生长的农作物,应给予被征者农作物补偿的费用。
输电工区和财务部就经常干青苗赔付转账的事情,需要汇总以下信息并形成表格:姓名、账号、开户银行、联行号、通道费用。
通过OCR技术,姓名可以从身份证复印件提,账号、开户行可以从银行卡复印件提,通道费用可以从赔付表中的小写和大写进行交叉验证,唯一要解决的是这个联行号问题,如果能够解决,那么这个工作就可以让人工智能自己干了。
平时员工都是通过百度一个一个银行手动搜索联行号,太费精力了,我查了一下成都地区的银行,不过也就1509个,用爬虫把他们全部爬下来,存入数据库,这个问题就解决了。
整个办公自动化场景经过我们的拆解,唯一的难点就是爬取银行联行号并存入数据库等待调用。
下面我们就手撸爬虫和数据库代码。
安装mysql这个步骤网上遍地都是,此处省略。
步骤一:导入必要的库
import pymysql
import csv
from bs4 import BeautifulSoup
import requests
步骤二:爬取数据存入csv文件打开看下是不是自己想要的数据
找到对应的网页点f12分析一下html的结构就知道要爬的数据从哪个位置取。
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文件,确认过眼神,就是我们要的数据。
步骤三:将我们爬下来的数据存入数据库备用
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数据库查看,所有数据已全部存入。
请叫我数据库爬虫小天才,我们下期真实应用场景再见。