PdfProcessor设计

整体流程。

  • 处理单元定期获取新的PDF文件信息,初始为新建状态。按照如下的流程

整体流程

  • 状态包括:新建、待处理、无需处理、已处理。文件状态信息
  • 流程包括:获取新增pdf信息、是否要处理、处理

状态信息

  • 保存在pickle文件中
  • 每个文件对应一个status_dict,所有的pdf集合对应一个pdf2html_status_dict。假如只有一个pdf文件,id为1001。不同状态的pdf2html_status_dict信息如下:
pdf2html_status_dict= {1001: {'status': 10} } # 新建
pdf2html_status_dict=  {1001: {'status': 20} } # 待处理
pdf2html_status_dict=  {1001: {'status': 21} } # 无需处理
pdf2html_status_dict= {1001: {'status': 30, 
  'html_path': 'htmls/2018/02/01/深高速债券说明书.html',
   'duraton': 300} } # 已处理。处理时长为300秒。
  • 假如新增了一个pdf文件,pdf2html_status_dict信息如下
pdf2html_status_dict= {
  1001:{'status': 30,
        'html_path': '2018/02/01/深高速债券说明书.html',
         'duraton': 300} ,
  1002:{'status': 10}
                       } # 1002为新增的pdf文件

流程:获取新增pdf列表

本流程会依赖于PDF的文件服务器(命名为FileServer,现由鸿健负责)。FileServerRequest是这个服务器的外观,这个类提供以下方法:

.search(date):

  • 输入参数
date: yyyymmdd形式的字符串,例如"20180506"
  • 返回值
所有当天新增的pdf信息。示例:
`{'id':[1001, 1002], 'annouceDate': ['20180505', '20180506'], 'title': ['深高速债券说明书', '宁沪高速说明书'
]}`

.get_pdf(id, local_dir)方法

  • 输入参数:
id : 标志pdf文件的唯一id,必须为整数。例如:1001,
local_dir: 保存在本地的文件夹地址。 例如:'D:/test')
  • 解释
可以通过id来获取相应的pdf全文。并且保存在local_dir定义的目录里面,为id。
  • 返回值
返回本地pdf文件的保存路径。例如:'D:/test/1001.pdf'

流程: 判断是否要处理

1.给PDF文件打上若干标签。某个PDF文件对应的标签列表可以为空。先定义如下标签:
(1)募集说明书(包括债券募集说明书、股票募集说明书等)
(2)业绩报告。(包括年报、半年报和季报,不包括业绩预告与业绩公告)
(3)业绩快报。
(4)业绩预告。
(5)重大交易报告。(例如华锋股份:发行股份购买资产并募集配套资金暨关联交易报告书)
(6)营运数据公告。(例如:深高速2018年5月未经审计营运数据公告)

2.筛选出需要生成结构化HTML的PDF类别。初步包含上面提到的(1)~(6)个标签对应的所有PDF。

流程:处理

  1. 不同的PDF会有不一样的排版格式。因此需要不一样的处理逻辑。
  2. 需要根据PDF文件的属性(例如:标签、交易代码、公告日期)配置不同的处理逻辑。
  3. PDF实际处理

    • 具体逻辑会放到程序文档中维护。
  4. 生成的HTML文件

    • 处理完会形成一个HTML文件。这个文件的路径规则为:htmls/{Year}/{Month}/{Day}/{Tittle}.html, 其中的日期是根据公告日期来的。

5.生成HTML文件的ID以及相关信息:

htmls_dict = {1022: {'pdf_id': 1001, 'path': 'test/深高速.html'},
              1023: {'pdf_id': 1002, 'path': 'test/沪宁高速.html'}
              }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值