python计算利率贷款_用Python获取银行网站上的存贷款利率表
项目背景
最近在做一个利率市场化咨询的项目,主要是协助银行搭建定价体系,提供定价策略,在充分考虑产品差异、顾客需求差异、时间差异、地点差异等因素基础上制定不同的存贷款定价方法。
在制定定价策略之前, 我们通常会分析客户所处的内外部的环境。外部环境分析可以分成宏观环境分析、行业环境分析等部分。 在行业分析(Industrial Analysis) 部分, 我们会确定客户的存贷款利率价格在业内处于什么样的水平。这就需要去采集各家银行的存贷款利率数据。
然而Wind上没有相关的数据源可供下载。 这就需要不怕脏不怕累的小朋友们去百度搜索各家银行的网站,然后再用肉眼寻找躲在银行主页角落的“存贷款利率”的连接, 点击进入后将存贷款利率录入到Excel中。 这绝对是是对Junior耐心、眼力的一个考验... 这种没有什么附加值、重复性很强的工作,对于新人成长并没有什么帮助。但是怎么才能让这种无聊的工作自动化呢 ?
LifeIs Short,UsePython
这时候我们就要引出 简单、易学、功能强大的编程语言 Python了。我就在这里不赘述Python的优点了,只放一个一目了然的编程语言比较图:
需求分析
在这项任务中,我们需要的自动化的过程并不多,只需要遍历各大银行主页,搜索到存贷款页面连接并打印或储存下来即可。 我们当然也可以直接将数据直接也爬取下来存在Excel中, 但因为各家银行网站架构设计各异,有些存贷款利率表甚至只是一张图片,页面分析的过程会比较耗时。所以,我们暂时不将数据爬取转存这项功能放入我们的需求清单中。
爬取过程
首先, 我们先找到一个银行网址导航网站。我选取的是360导航页面 (http://hao.360.cn/yinhanggengduo.html):
并查看源代码:
可以看出, 银行网址都被放入了 a 这个标签中。 我们可以使用第三方库 BeautifulSoup 美丽汤对该标签进行下载。
当然,不只是银行网址被放入了这个标签中,还有其他很多不相关的网站也是被放入了这个标签下。 这时候我们就需要 正则表达式对于该标签下的链接进行筛选。经过观察, 大部分银行网站的标签名都以“银行”结尾, 所以我们使用
" .银行 "
作为筛选的正则。而在银行页面上,存贷款的利率信息表的标签名,一般都会包含”款利率“这几个字, 所以我们使用:
”款利率. *"
作为寻找存贷款利率链接的正则。
下面是准备阶段的Python代码:
#encoding:utf-8importurllib2
importre
frombs4 importBeautifulSoup
#建立列表储存url和对应的标签名url = []
name= []
#建立集合, 将爬取过的页面放入,避免才重复urlset =set("")
#用于筛选的正则表达式source = ".银行"temp = source.decode('utf8')
source2 = "款利率.*"temp2 = source2.decode('utf8')
#导航网站作为我们爬取的根页面response = urllib2.urlopen("http://hao.360.cn/yinhanggengduo.html")
html= response.read()
soup = BeautifulSoup(html,'html.parser')
#将满足条件的url和页面名称放入列表中fortag insoup.find_all(name='a', text=re.compile(temp)):
name.append(tag.string)
url.append(tag.get('href'))
我们在获取好各大银行网站的url后, 我们需要进一步进入银行的存贷款利率信息表页面。但是经过进一步分析,我们发现,第二层的url一般都是短链接:
无法直接使用,所以我们需要将短链接与域名进行拼接:
#域名拼接url2 = link tag2.get('href')
而如果第二层链接是可以直接访问的连接,这样拼接会导致访问错误,所以我们将连接转换为String, 通过判断其前四个Char是否为http来判断该连接为长连接还是短链接:
ifhref[0:4] == 'http':
#长连接,不进行域名拼接url2 = tag2.get('href')
并在每次拼接后查询该连接是否输出过,如果已经输出过,则通过continue跳过循环。如果没有,则输出后加入urlset集合中:
ifurl2 inurlset:
continueelse:
urlset.add(url2)
Python输出部分代码:
num = -1forlink inurl:
num = num 1try:
linkresponse = urllib2.urlopen(link)
htmlpage = linkresponse.read()
pagesoup = BeautifulSoup(htmlpage, 'html.parser')
fortag2 inpagesoup.find_all(name='a', text=re.compile(temp2)):
#得到银行名称bname = tag2.get_text()
#得到页面名称href = str(tag2.get('href'))
ifhref[0:4] == 'http':
#长连接,不进行域名拼接url2 = tag2.get('href')
ifurl2 inurlset:
#输出过, 跳出循环continueelse:
#未输出过,放入集合urlset.add(url2)
else:
#域名拼接url2 = link tag2.get('href')
ifurl2 inurlset:
continueelse:
urlset.add(url2)
printname[num] " " bname " " url2
except:
pass
运行结果
我们在完成代码部分后,运行该部分Python脚本。
查看输出:
可以看出,我们需要的银行存贷款信息页面链接已经打印出来。 做咨询的小朋友们可以直接点击进入记录相关银行的存贷款利率了~
最后,祝大家新年快乐~ 新的一年工作学习顺利~
本文转载于微信公众号: SAS中文论坛(mysasnet),更多微信文章请扫描关注公众号:
Tag标签:
python计算利率贷款_用Python获取银行网站上的存贷款利率表相关推荐
- python计算利率贷款_python 贷款利息计算公式
固定支付贷款 固定支付贷款(fixed-payment loan) 也称为分期偿还贷款(fully amortized loan). 贷款人向借款人提供一定数量的资金,在约定的若干年度内,借款人每个期 ...
- python 计算累计人数_免费Python入门课程,看到就是赚到~
前言 人生苦短,我用python.当下最火的编程语言,你是否也想试试? Python发行于1991年,广泛应用于系统管理任务的处理和WEB编程.创始人阿姆斯特丹Guido为了打发圣诞节的无趣,决心开发 ...
- python计算面积代码_利用Python求阴影部分的面积实例代码
利用Python求阴影部分的面积实例代码 来源:中文源码网 浏览: 次 日期:2019年11月5日 [下载文档: 利用Python求阴影部分的面积实例代码.txt ] (友情提示:右键点 ...
- python计算身体质量指数_利用Python计算身体质量指数BMI来判断体型
身体质量指数BMI:对身体质量的刻画(Body Mass Index) 国际上常用的衡量人体肥胖和健康程度的重要标准,主要用于统计分析. 定义: 有上图考虑BMI的值的结果因国内和国外的标准不同而不同 ...
- python计算余弦距离_在Python中计算余弦距离的优化方法
如果可以使用SciPy,可以使用spatial.distance中的余弦值: 如果您不能使用SciPy,您可以尝试通过重写Python来获得一个小的加速(编辑:但是没有像我以前想像的那样工作,见下文) ...
- python计算矩阵行列式_基础 | Python 下的行列式值
关键词:线性代数 / 矩阵 / 行列式 矩阵作为绝大多数算法的算子,当矩阵里的数字被赋予了意义,例如每个 row 表示了一个线性方程式,那么如果把这些线性方程用向量的形式在 xyz 空间坐标中表示,从 ...
- python计算圆周率近似值_使用python实现计算圆周率π的方法
使用python实现计算圆周率π的方法 发布时间:2020-11-19 17:34:12 来源:亿速云 阅读:94 这期内容当中小编将会给大家带来有关使用python实现计算圆周率π的方法,文章内容丰 ...
- python计算圆周率代码_使用 Python 计算 π 值
π是一个无数人追随的真正的神奇数字.我不是很清楚一个永远重复的无理数的迷人之处.在我看来,我乐于计算π,也就是计算π的值.因为π是一个无理数,它是无限的.这就意味着任何对π的计算都仅仅是个近似值.如果 ...
- python计算特征值特征向量_使用Python求解特征值、特征向量及奇异值分解(SVD)...
SVD也是对矩阵进行分解,但是和特征分解不同,SVD并不要求要分解的矩阵为方阵.假设我们的矩阵A是一个m×n的矩阵,那么我们定义矩阵A的SVD为:A=UΣVT 其中U是一个m×m的矩阵,Σ是一个m×n ...
最新文章
- 安装mysql_python的适合遇到mysql_config not found解决方案(mac)
- MFC创建属性页详细步骤与注意事项
- 大数据框架对比:Hadoop、Storm、Samza、Spark和Flink——flink支持SQL,待看
- 联通和阿里云合作 试点打通全国IT系统
- (十)深入浅出TCPIP之网络阻塞和非阻塞
- 小米air耳机重新配对_横比小米 Air 2s 和 OPPO Enco W31:同一颗芯玩出的大不同
- 软件发布的版本缩写含义RC 、RTM
- OrCAD Capture CIS 16.6 修改原理图的页面大小
- socket之远程执行命令
- 数据可视化分析工具大集合
- 服务器出现漏洞如何处理
- ATOM Z3000 家族整理之基本信息(一) V2.0版
- 残差分析(残差原理与标准化残差分析)
- GoLang - Go中Mocking(3)
- Go语言基础数据类型所占内存大小
- 禁用计算机硬盘,禁止电脑每次开机都要自动扫描磁盘的多种方法
- 传播易7月发力 微信大号营销成为前锋
- Oracle数据库Bitand()函数用法(计算位移)
- No module named 'torchvision.ops'的解决办法
- 对不起,我们的专业不是万能的
热门文章
- 上线文件服务器域名怎么建站,怎么做网站?建站详细流程
- 灰色关联度矩阵——MATLAB在数学建模中的应用
- 记可视化项目代码设计的心路历程以及理解
- GC垃圾回收—详细总结
- 施密特宣布离开谷歌董事会! Facebook却被联邦政府塞高管进来?
- windows系统目录programdata和program file(x86)
- win10定时关机c语言,小编为你win10系统通过命令实现定时关机的步骤
- python与开源gis_转载《Python与开源GIS教程》随书源码网址
- elementui表格宽度适应内容_解决elementui表格操作列自适应列宽代码示例
- 用计算机思维解决问题的例子,简单易懂的思维模型:解决问题篇