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

用Python爬取金融市场数据

发布时间:2019-01-17 23:31:45 所属栏目:教程 来源:隠塵退士
导读:一、写在前面 因为在平常的事变中,必要对某信任网的信任在售和资管在售数据举办统计说明,可是一条一条的输入,显然过分耗时耗力,于是萌生了写个爬虫的设法。 一门计较机说话,可以当做是在仿照人的目标或意图来举办一系列举动或举措,以是在写代码之前

第一,你的目标或意图是什么,对付本例而言,我必要获取恣意某页至某页信任在售产物的下面数据:产物名称、刊行机构、刊行时刻、最高收益、产物限期、投资行业、刊行地、收益分派方法、刊行局限、最低收益、最高收益和利率品级分别环境这12个数据。

第二,假如是人,必要哪些举措来到达这个目标。我们来看下网页。举措就清楚了:

输入网址/搜刮要害字 > 进入网站 > 点击赤色框框里的信任产物和在售 > 录入下面绿色框框里的相干信息 > 发明信息不全,再点击这个产物,在详情页(再下一张图)继承录入。

用Python爬取金融市场数据

用Python爬取金融市场数据

2、开始爬取

既然举措清楚了,那就可以让计较机来模仿人的这个举措举办爬取了。

然后就是写代码的逻辑了。我们用做数学题常用的倒推法来梳理这个进程。

要想获取数据 < 你得理会网页给你的相应 < 你得有个相应 < 你得发送哀求 < 你得有个哀求request < 你得有个url。

然后我们再正过来解题:获取url > 构建request > 发送哀求 > 获取相应 > 理会相应 > 获取所需数据 > 生涯数据。

以是凭证这个步调,我们可以先做出一个大框架,然后在框架的基本上增补血肉。大框架,就是界说个主函数。

值得留意的是,本例中,每个产物的信息获取,我们都有二次点击的举措,即第一页数据不全,我们再点击进入详情页举办剩余数据的获取,因此,本例是有两层的数据获取进程的。第一层行使正则表达式,第二层行使bs4。

① 界说主函数

如下是这个主函数,前面的写入相干数据你可以先不管,这都是在第一步的获取url时,后补过来的。

回到前面的目标:提取恣意某页至恣意某页的数据,以是写个轮回是必需的,然后在轮回下方,两层网页的数据获取框架就出来了。(因为第二层网页的url是按照第一层网页的某个数据拼接出来的,而第一层网页是一下子提取整个页面全部产物的信息,以是第二层网页的提取也配置了个轮回,对第一层网页的全部产物,一个一个点进去举办提取)

  1. # 界说一个主函数 
  2. def main(): 
  3.  
  4.     # 写入相干数据 
  5.     url_1 = 'http://www.某信任网.com/Action/ProductAJAX.ashx?' 
  6.     url_2 = 'http://www.某信任网/Product/Detail.aspx?' 
  7.     size = input('请输入每页表现数目:') 
  8.     start_page = int(input('请输入起始页码:')) 
  9.     end_page = int(input('请输入竣事页码')) 
  10.     type = input('请输入产物范例(1代表信任,2代表资管):')   
  11.     items = []                # 界说一个空列表用来存储数据 
  12.  
  13.     # 写轮回爬取每一页 
  14.     for page in range(start_page, end_page + 1): 
  15.  
  16.     # 第一层网页的爬取流程 
  17.         print('第{}页开始爬取'.format(page)) 
  18.  
  19.         # 1、拼接url——可界说一个分函数1:joint 
  20.         url_new = joint(url_1 ,size=size ,page=page ,type=type) 
  21.  
  22.         # 2、提倡哀求,获取相应——可界说一个分函数2:que_res 
  23.         response = que_res(url_new) 
  24.  
  25.         # 3、理会内容,获取所需数据——可界说一个分函数3:parse_content_1 
  26.         contents = parse_content_1(response) 
  27.  
  28.         # 4、休眠2秒 
  29.         time.sleep(2) 
  30.  
  31.     # 第二层网页的爬取流程 
  32.  
  33.         for content in contents: 
  34.             print('    第{}页{}开始下载'.format(page ,content[0])) 
  35.  
  36.             # 1、拼接url 
  37.             id = content[0] 
  38.             url_2_new = joint(url_2 ,id=id)      # joint为前面界说的第1个函数 
  39.  
  40.             # 2、提倡哀求,获取相应 
  41.             response_2 = que_res(url_2_new)     # que_res为前面界说的第2个函数 
  42.  
  43.             # 3、理会内容,获取所需数据——可界说一个分函数4:parse_content_2,直接返回字典名目标数据 
  44.             item = parse_content_2(response_2 ,content) 
  45.  
  46.             # 存储数据 
  47.             items.append(item) 
  48.             print('    第{}页{}竣事下载'.format(page ,content[0])) 
  49.  
  50.             # 休眠5秒 
  51.             time.sleep(5) 
  52.  
  53.         print('第{}页竣事爬取'.format(page)) 
  54.  
  55.     # 生涯数据为dataframe名目CSV文件 
  56.     df = pd.DataFrame(items) 
  57.     df.to_csv('data.csv' ,index=False ,sep=',' ,encoding='utf-8-sig') 
  58.  
  59.    print('*'*30) 
  60.    print('所有爬取竣事') 
  61.  
  62. if __name__ == '__main__': 
  63.     main() 

② 获取url —— 第一层和第二层通用

因为我们必要会见两层的数据,以是但愿界说一个函数,能对两层的URL都可以举办拼接。

(编辑:湖南网)

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

热点阅读