项目背景

最近在做一个利率市场化咨询的项目,主要是协助银行搭建定价体系,提供定价策略,在充分考虑产品差异、顾客需求差异、时间差异、地点差异等因素基础上制定不同的存贷款定价方法。

在制定定价策略之前, 我们通常会分析客户所处的内外部的环境。外部环境分析可以分成宏观环境分析、行业环境分析等部分。 在行业分析(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获取银行网站上的存贷款利率表相关推荐

  1. python计算利率贷款_python 贷款利息计算公式

    固定支付贷款 固定支付贷款(fixed-payment loan) 也称为分期偿还贷款(fully amortized loan). 贷款人向借款人提供一定数量的资金,在约定的若干年度内,借款人每个期 ...

  2. python 计算累计人数_免费Python入门课程,看到就是赚到~

    前言 人生苦短,我用python.当下最火的编程语言,你是否也想试试? Python发行于1991年,广泛应用于系统管理任务的处理和WEB编程.创始人阿姆斯特丹Guido为了打发圣诞节的无趣,决心开发 ...

  3. python计算面积代码_利用Python求阴影部分的面积实例代码

    利用Python求阴影部分的面积实例代码 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  利用Python求阴影部分的面积实例代码.txt ] (友情提示:右键点 ...

  4. python计算身体质量指数_利用Python计算身体质量指数BMI来判断体型

    身体质量指数BMI:对身体质量的刻画(Body Mass Index) 国际上常用的衡量人体肥胖和健康程度的重要标准,主要用于统计分析. 定义: 有上图考虑BMI的值的结果因国内和国外的标准不同而不同 ...

  5. python计算余弦距离_在Python中计算余弦距离的优化方法

    如果可以使用SciPy,可以使用spatial.distance中的余弦值: 如果您不能使用SciPy,您可以尝试通过重写Python来获得一个小的加速(编辑:但是没有像我以前想像的那样工作,见下文) ...

  6. python计算矩阵行列式_基础 | Python 下的行列式值

    关键词:线性代数 / 矩阵 / 行列式 矩阵作为绝大多数算法的算子,当矩阵里的数字被赋予了意义,例如每个 row 表示了一个线性方程式,那么如果把这些线性方程用向量的形式在 xyz 空间坐标中表示,从 ...

  7. python计算圆周率近似值_使用python实现计算圆周率π的方法

    使用python实现计算圆周率π的方法 发布时间:2020-11-19 17:34:12 来源:亿速云 阅读:94 这期内容当中小编将会给大家带来有关使用python实现计算圆周率π的方法,文章内容丰 ...

  8. python计算圆周率代码_使用 Python 计算 π 值

    π是一个无数人追随的真正的神奇数字.我不是很清楚一个永远重复的无理数的迷人之处.在我看来,我乐于计算π,也就是计算π的值.因为π是一个无理数,它是无限的.这就意味着任何对π的计算都仅仅是个近似值.如果 ...

  9. python计算特征值特征向量_使用Python求解特征值、特征向量及奇异值分解(SVD)...

    SVD也是对矩阵进行分解,但是和特征分解不同,SVD并不要求要分解的矩阵为方阵.假设我们的矩阵A是一个m×n的矩阵,那么我们定义矩阵A的SVD为:A=UΣVT 其中U是一个m×m的矩阵,Σ是一个m×n ...

最新文章

  1. 安装mysql_python的适合遇到mysql_config not found解决方案(mac)
  2. MFC创建属性页详细步骤与注意事项
  3. 大数据框架对比:Hadoop、Storm、Samza、Spark和Flink——flink支持SQL,待看
  4. 联通和阿里云合作 试点打通全国IT系统
  5. (十)深入浅出TCPIP之网络阻塞和非阻塞
  6. 小米air耳机重新配对_横比小米 Air 2s 和 OPPO Enco W31:同一颗芯玩出的大不同
  7. 软件发布的版本缩写含义RC 、RTM
  8. OrCAD Capture CIS 16.6 修改原理图的页面大小
  9. socket之远程执行命令
  10. 数据可视化分析工具大集合
  11. 服务器出现漏洞如何处理
  12. ATOM Z3000 家族整理之基本信息(一) V2.0版
  13. 残差分析(残差原理与标准化残差分析)
  14. GoLang - Go中Mocking(3)
  15. Go语言基础数据类型所占内存大小
  16. 禁用计算机硬盘,禁止电脑每次开机都要自动扫描磁盘的多种方法
  17. 传播易7月发力 微信大号营销成为前锋
  18. Oracle数据库Bitand()函数用法(计算位移)
  19. No module named 'torchvision.ops'的解决办法
  20. 对不起,我们的专业不是万能的

热门文章

  1. 上线文件服务器域名怎么建站,怎么做网站?建站详细流程
  2. 灰色关联度矩阵——MATLAB在数学建模中的应用
  3. 记可视化项目代码设计的心路历程以及理解
  4. GC垃圾回收—详细总结
  5. 施密特宣布离开谷歌董事会! Facebook却被联邦政府塞高管进来?
  6. windows系统目录programdata和program file(x86)
  7. win10定时关机c语言,小编为你win10系统通过命令实现定时关机的步骤
  8. python与开源gis_转载《Python与开源GIS教程》随书源码网址
  9. elementui表格宽度适应内容_解决elementui表格操作列自适应列宽代码示例
  10. 用计算机思维解决问题的例子,简单易懂的思维模型:解决问题篇