用Python获取银行网站上的存贷款利率表.docx

上传人:b****1 文档编号:1591902 上传时间:2022-10-23 格式:DOCX 页数:4 大小:16.36KB
下载 相关 举报
用Python获取银行网站上的存贷款利率表.docx_第1页
第1页 / 共4页
用Python获取银行网站上的存贷款利率表.docx_第2页
第2页 / 共4页
用Python获取银行网站上的存贷款利率表.docx_第3页
第3页 / 共4页
用Python获取银行网站上的存贷款利率表.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

用Python获取银行网站上的存贷款利率表.docx

《用Python获取银行网站上的存贷款利率表.docx》由会员分享,可在线阅读,更多相关《用Python获取银行网站上的存贷款利率表.docx(4页珍藏版)》请在冰豆网上搜索。

用Python获取银行网站上的存贷款利率表.docx

用Python获取银行网站上的存贷款利率表

用Python获取银行网站上的存贷款利率表

项目背景

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

在制定定价策略之前,我们通常会分析客户所处的内外部的环境。

外部环境分析可以分成宏观环境分析、行业环境分析等部分。

在行业分析(IndustrialAnalysis)部分,我们会确定客户的存贷款利率价格在业内处于什么样的水平。

这就需要去采集各家银行的存贷款利率数据。

然而Wind上没有相关的数据源可供下载。

这就需要不怕脏不怕累的小朋友们去XX搜索各家银行的网站,然后再用肉眼寻找躲在银行主页角落的“存贷款利率”的连接,点击进入后将存贷款利率录入到Excel中。

这绝对是是对Junior耐心、眼力的一个考验这种没有什么附加值、重复性很强的工作,对于新人成长并没有什么帮助。

但是怎么才能让这种无聊的工作自动化呢?

LifeIsShort,UsePython

这时候我们就要引出简单、易学、功能强大的编程语言Python了。

我就在这里不赘述Python的优点了,只放一个一目了然的编程语言比较图:

需求分析

在这项任务中,我们需要的自动化的过程并不多,只需要遍历各大银行主页,搜索到存贷款页面连接并打印或储存下来即可。

我们当然也可以直接将数据直接也爬取下来存在Excel中,但因为各家银行网站架构设计各异,有些存贷款利率表甚至只是一张图片,页面分析的过程会比较耗时。

所以,我们暂时不将数据爬取转存这项功能放入我们的需求清单中。

爬取过程

首先,我们先找到一个银行网址导航网站。

我选取的是360导航页面(

并查看源代码:

可以看出,银行网址都被放入了a这个标签中。

我们可以使用第三方库BeautifulSoup美丽汤对该标签进行下载。

当然,不只是银行网址被放入了这个标签中,还有其他很多不相关的网站也是被放入了这个标签下。

这时候我们就需要正则表达式对于该标签下的链接进行筛选。

经过观察,大部分银行网站的标签名都以“银行”结尾,所以我们使用

.银行

作为筛选的正则。

而在银行页面上,存贷款的利率信息表的标签名,一般都会包含”款利率“这几个字,所以我们使用:

”款利率.*

作为寻找存贷款利率链接的正则。

下面是准备阶段的Python代码:

#encoding:

utf-8

importurllib2

importre

frombs4importBeautifulSoup

#建立列表储存url和对应的标签名

url=[]

name=[]

#建立集合,将爬取过的页面放入,避免才重复

urlset=set("")

#用于筛选的正则表达式

source=".银行"

temp=source.decode('utf8')

source2="款利率.*"

temp2=source2.decode('utf8')

#导航网站作为我们爬取的根页面

response=urllib2.urlopen("

html=response.read()

soup=BeautifulSoup(html,'html.parser')

#将满足条件的url和页面名称放入列表中

fortaginsoup.find_all(name='a',text=pile(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集合中:

ifurl2inurlset:

continue

else:

urlset.add(url2)

Python输出部分代码:

num=-1

forlinkinurl:

num=num+1

try:

linkresponse=urllib2.urlopen(link)

htmlpage=linkresponse.read()

pagesoup=BeautifulSoup(htmlpage,'html.parser')

fortag2inpagesoup.find_all(name='a',text=pile(temp2)):

#得到银行名称

bname=tag2.get_text()

#得到页面名称

href=str(tag2.get('href'))

ifhref[0:

4]=='http':

#长连接,不进行域名拼接

url2=tag2.get('href')

ifurl2inurlset:

#输出过,跳出循环

continue

else:

#未输出过,放入集合

urlset.add(url2)

else:

#域名拼接

url2=link+tag2.get('href')

ifurl2inurlset:

continue

else:

urlset.add(url2)

printname[num]+""+bname+""+url2

except:

pass

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 工作计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1