加入收藏 | 设为首页 | 会员中心 | 我要投稿 网站开发网_安阳站长网 (https://www.0372zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

用Python爬取金融市场数据

发布时间:2019-01-18 11:17:27 所属栏目:教程 来源:隠塵退士
导读:副标题#e# 一、写在前面 由于在平时的工作中,需要对某信托网的信托在售和资管在售数据进行统计分析,但是一条一条的输入,显然太过耗时耗力,于是萌生了写个爬虫的想法。 一门计算机语言,可以当做是在模仿人的目的或意图来进行一系列行为或动作,所以在写

如下图为第一层页面的内容和源码,由第二个红框中的内容(X-Requested-With:XMLHttpRequest),可知这是一个AJAX get请求,且携带者第三个红框中的数据,而第三个红框中的数据,又恰好是第一个红框中的url的一部分,即为:

http://www.某信托网.com/Action/ProductAJAX.ashx?加上第三个红框中的数据。

第三个框框中包括几个可变的数据:pageSize(表示一页显示多少产品);pageIndex(表示第几页);conditionStr(定义产品类型,1表示信托,2表示资管),其余的数据都是固定的(这其中有个_:1544925791285这种下划线带一串数字的东西,像是个随机数,去掉也没影响,我就给去掉了)。

用Python爬取金融市场数据

下图为第二层页面的内容和源码,可见只是一个简单的get请求,且网址很简单,就是一个http://www.某信托网.com/Product/Detail.aspx?加上一个id,而这个id又来自哪里呢,答案就在第一层网页的响应数据中(见再下面一幅图的红色框)。

用Python爬取金融市场数据

用Python爬取金融市场数据

通过上面的分析,第一层网页的请求url由一个固定的部分加上一些数据,第二层网页的url依赖于第一层的数据,我们先在主函数中将url_1、url_2和一些可变的数据写入(见上面的主函数),然后定义一个函数用来拼接两层的url即可,因为第一层网页url的固定部分长度为47,第二层的为43,这里使用一个长度条件来判断是拼接第一层还是拼接第二层。

  1. # 定义第1个分函数joint,用来拼接url 
  2. def joint(url,size=None,page=None,type=None,id=None): 
  3.     if len(url) > 45: 
  4.         condition = 'producttype:' + type + '|status:在售' 
  5.         data = { 
  6.         'mode': 'statistics', 
  7.         'pageSize': size, 
  8.         'pageIndex': str(page), 
  9.         'conditionStr': condition, 
  10.         'start_released': '', 
  11.         'end_released': '', 
  12.         'orderStr': '1', 
  13.         'ascStr': 'ulup' 
  14.         } 
  15.         joint_str = urllib.parse.urlencode(data) 
  16.         url_new = url + joint_str 
  17.     else: 
  18.         data = { 
  19.             'id':id 
  20.             } 
  21.         joint_str = urllib.parse.urlencode(data) 
  22.         url_new = url + joint_str 
  23.     return url_new 

③ 构建request + 获取response一条龙 —— 第一层和第二层通用

获取url后,接下来就是构建request用来发送请求获取响应了,此处定义一个函数实现一条龙服务。

(编辑:网站开发网_安阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!