版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python金融大数据挖掘与分析by华能信托王宇韬第十讲综合案例二:通过PDF文本解析分析上市公司理财公告10.1巨潮资讯网理财公告PDF批量下载实战10.2PDF文本解析基础10.3PDF文本解析实战-寻找合适的理财公告上一章最后一节讲了巨潮资讯网理财公告信息的爬取实战,其中还有些地方可以完善:如爬取多页内容自动筛选所需内容比如只要2018年的数据以及完成理财报告PDF的批量自动下载在这一小节就把这些知识点进行分析讲解。第十讲综合案例二:通过PDF文本解析分析上市公司理财公告10.1.1爬取巨潮资讯网多页内容在巨潮资讯网上批量爬取多页没有办法用之前爬取普通网站多页的手段:修改网url进行处理,因为翻页操作的时候,网址的链接并没有发生变化。此时解决办法为利用selenium来模拟鼠标点击下图所示的“下一页”按钮,并根据公告数量来确定模拟点击次数,每点击完就获取一下该页的网页源代码,最后把获取到的各页的源代码放到一个列表里。10.1巨潮资讯网理财公告PDF批量下载实战10.1.1爬取巨潮资讯网多页内容首先来完成自动模拟点击按钮的操作,这个和8.2.4节讲过的模拟点击“百度一下”那个按钮的道理是一样的,只要获取到这个“下一页”按钮的xpath内容,就可以用selenium进行模拟点击了。方法如下:在网页上利用F12调出开发者工具然后选中翻页按钮对应的位置右键选择Copy然后选中CopyXpath把Xpath内容复制到代码里即可10.1巨潮资讯网理财公告PDF批量下载实战10.1.1爬取巨潮资讯网多页内容把Xpath内容复制到代码里以后,组合的代码如下:10.1巨潮资讯网理财公告PDF批量下载实战10.1.1爬取巨潮资讯网多页内容把Xpath内容复制到代码里以后,组合的代码如下:注意点:运行之后发现它已经可以自动翻页跳转到第二页了,这边引入time模块,在访问网址后写一个time.sleep(3),一是为了方便演示点击翻页的过程,二是防止浏览器页面还处于刷新阶段。10.1巨潮资讯网理财公告PDF批量下载实战10.1.1爬取巨潮资讯网多页内容那如果想要把所有的内容都获取下来该如何处理呢,比如这边数万条理财公告的信息。我们只需要获取到所有公告的数量,这个数量在网页上的右下角有显示然后因为巨潮资讯网每页是显示十条内容,所以把这个数量除以十,那么就是我们需要翻页的次数了利用F12和观察源代码可以发现该数量的正则规律如下:10.1巨潮资讯网理财公告PDF批量下载实战10.1.1爬取巨潮资讯网多页内容获取公告条数和一共多少页的页数的完整代码如下:10.1巨潮资讯网理财公告PDF批量下载实战10.1.1爬取巨潮资讯网多页内容在我们从前面的代码中获得页数之后,可以进行自动翻页:10.1巨潮资讯网理财公告PDF批量下载实战下面要把datas这个列表转换成字符串,使用.join(列表名)的方式可以把列表转换成字符串。因为只有在字符串中才能提取想要的各个页面的公告标题,下载地址,日期等信息。加完.join(datas)如下:10.1.1爬取巨潮资讯网多页内容我们可以使用从第9.4章中的代码提取标题,下载地址,日期:10.1巨潮资讯网理财公告PDF批量下载实战10.1.1爬取巨潮资讯网多页内容我们可以使用从第9.4章中的代码来清洗标题,下载地址,日期:10.1巨潮资讯网理财公告PDF批量下载实战10.1.1爬取巨潮资讯网多页内容打印出的标题,下载地址,日期如下:10.1巨潮资讯网理财公告PDF批量下载实战10.1.2自动筛选所需内容如说这里只想要日期为2019年和2020年的内容。这里可以通过if()语句把不符合条件的内容都赋值为空字符串,如果符合条件的,则让它等于原来的值,这和第五章数据清洗的相关代码类似,代码如下:10.1巨潮资讯网理财公告PDF批量下载实战10.1.2自动筛选所需内容我们利用while循环遍历这些个列表,一旦发现有某个元素是空字符串,就直接用列表.remove(元素)的办法把这些空字符串给剔除掉。代码如下:10.1巨潮资讯网理财公告PDF批量下载实战10.1.2自动筛选所需内容我们还可以使用类似的方法在标题中查找关键字,并删除不包含关键字的任何标题,列如下:10.1巨潮资讯网理财公告PDF批量下载实战10.1.3理财公告PDF的自动批量下载如下图所示,对于一个刚刚获取到的PDF下载地址:/new/disclosure/detail?orgId=jjjl0000090&announcementId=1207206145&announcementTime=2019-12-27,我们需要做的就是让selenium模拟点击一下下图的下载按钮即可:10.1巨潮资讯网理财公告PDF批量下载实战10.1.3理财公告PDF的自动批量下载我们使用f12方法查找xpath或ccs_selector代码:获取的xpath代码10.1巨潮资讯网理财公告PDF批量下载实战10.1.3理财公告PDF的自动批量下载运行结果如下,可以看到已经可以实现PDF的自动下载了:10.1巨潮资讯网理财公告PDF批量下载实战10.1.3理财公告PDF的自动批量下载那如何来实现批量下载呢,其实只要写一个for循环即可。我们之前已经获得了一个下载链接的列表href,利用for循环遍历该列表,就能实现把列表里所有的内容都下载下来了,代码如下:10.1巨潮资讯网理财公告PDF批量下载实战我们可以使用for函数告诉我们是否有要下载的pdf,如下所示:10.1巨潮资讯网理财公告PDF批量下载实战想要深入到PDF正文内容进行分析的话,就需要用到PDF文本解析技术。Python中有多个可以用于解析PDF文本的库,如:pdfplumber库pdfminer库tabula库等经笔者测试pdfplumber库是目前使用最方便的库,而且pdfplumber库不仅可以解析文字,还可以方便的解析PDF文件中的表格。10.2PDF文本解析基础10.2.1pdfplumber库的安装这里推荐pip安装法安装pdfplumber库,和之前讲过的pip安装法一样:Win+R调出运行框输入cmd后点击确定然后在弹出的控制台里输入“pipinstallpdfplumber”按一下Enter回车键,等待安装结束即可注意点:如果一直安装不成功,可以使用清华镜像镜像安装,代码如下:10.2PDF文本解析基础10.2.2pdfplumber库提取文本内容pdfplumber库的使用方法非常简单,通过pdfplumber库的extract_text()方法就可以解析PDF文件第一页的文本内容了,代码如下:10.2PDF文本解析基础10.2.2pdfplumber库提取文本内容如果想解析每一页的内容,那么通过for循环语句即可实现,代码如下:10.2PDF文本解析基础10.2.3pdfplumber库提取表格内容pdfplumber库还可解析文档中的表格,在演示文档“公司A理财公告.PDF”第4页有如下图所示的表格内容:10.2PDF文本解析基础10.2.3pdfplumber库提取表格内容通过pdfplumber库的extract_tables()方法就可以提取页面中的表格,代码如下:10.2PDF文本解析基础10.2.3pdfplumber库提取表格内容注意:通过extract_tables()返回的tables是该页的全部表格,其是一个列表。因为第四页只有一个表格,所以可以通过tables[0]来提取第一个也即唯一的表格,运行效果如下:10.2PDF文本解析基础10.2.3pdfplumber库提取表格内容我们可以通过第六章讲过的pandas库使得最终的展现效果更加好看一些,代码如下,其中table[0]即是表头信息,table[1:]为第二行及其以下的内容:获得的表格df如下图所示:10.2PDF文本解析基础10.2.3pdfplumber库提取表格内容此时获得的表格存在一些换行符\n,这个是因为在原表格中这些字符之间是存在换行的,如果想把这些换行符去掉,可以采用replace()函数将换行符替换掉,代码如下:10.2PDF文本解析基础10.2.3pdfplumber库提取表格内容此时获得的表格存在一些换行符\n,这个是因为在原表格中这些字符之间是存在换行的,如果想把这些换行符去掉,可以采用replace()函数将换行符替换掉,代码如下:10.2PDF文本解析基础10.2.3pdfplumber库提取表格内容这里再补充一个知识点,在有的编译器中,比如PyCharm中,展示DataFrame的时候可能只展示一部分列而不展示全部列,这里可以在打印查看df前多写如下一行代码解决该问题:10.2PDF文本解析基础完整代码如下所示:10.3.1遍历文件夹里所有的PDF文件首先我们需要遍历文件夹里所有的PDF文件然后才能进行批量的文本解析,在Python中通过如下几行代码即可实现文件夹遍历:10.3PDF文本解析实战-寻找合适的理财公告10.3.1遍历文件夹里所有的PDF文件各行代码解释如下:第一行引用os库,为之后使用os.walk功能遍历文件夹做准备;第二行就是写入你想要遍历的文件夹路径;第三行是遍历该母文件夹下面的所有子文件夹及子文件夹里的所有文件信息。如果没有子文件夹,那么就只循环一遍,获取到该母文件夹下面的所有文件信息。10.3PDF文本解析实战-寻找合适的理财公告10.3.1遍历文件夹里所有的PDF文件第四行是把文件信息打印输出出来。其中files[2]表示母文件夹和子文件夹里的各个文件信息,我们一般写files[2]来获取文件信息。如果写files[1]则表示各个子文件夹信息,如果写files[0]则表示母文件夹信息,运行结果如下:10.3PDF文本解析实战-寻找合适的理财公告10.3.1遍历文件夹里所有的PDF文件获取到文件名称后,我们还需要判断文件后缀名是否为.PDF,通过如下代码可以获得文件后缀名:有时文件后缀名为.pdf或.PDF,此时可以通过or逻辑运算符连接两个判断条件,代码如下:10.3PDF文本解析实战-寻找合适的理财公告10.3.1遍历文件夹里所有的PDF文件获取到文件名称后,我们还需要判断文件后缀名是否为.PDF,通过如下代码可以获得文件后缀名:有时文件后缀名为.pdf或.PDF,此时可以通过or逻辑运算符连接两个判断条件,代码如下:10.3PDF文本解析实战-寻找合适的理财公告10.3.1遍历文件夹里所有的PDF文件把这些PDF筛选出来之后,我们需要把它们都放到一个列表里,方便之后批量解析的时候调用,这里可以通过一个空列表和列表.append(新元素)的方法来完成该操作:上面获得的file_list中的元素都是文件名称,在真正实战的时候我们需要给文件名称加上文件夹路径,这样之后才可以调用。比如说我们需要把“信托购买报告A.PDF”改成“文件夹路径\\信托购买报告A.PDF”,我们通过字符串拼接的方式来加上文件夹路径:10.3PDF文本解析实战-寻找合适的理财公告10.3.1遍历文件夹里所有的PDF文件组合代码如下:10.3PDF文本解析实战-寻找合适的理财公告打印结果:10.3.2批量解析每一个PDF文件10.3PDF文本解析实战-寻找合适的理财公告10.3.2批量解析每一个PDF文件完成上一小节的文件遍历之后,下面的批量解析其实只要写一个for循环即可:10.3PDF文本解析实战-寻找合适的理财公告10.3.3将合格的PDF文件自动归档遍历并解析完PDF后,便能够进行一些深度分析了,这边以关键词筛选为例作为演示:只有当PDF正文里含有‘自有'、'议案'、'理财'或者'现金管理'这些关键词的时候,我们才把这个PDF筛选出来并存储到一个列表里,代码如下:10.3PDF文本解析实战-寻找合适的理财公告10.3.3将合格的PDF文件自动归档完整代码如下(仅显示变化的部分):10.3PDF文本解析实战-寻找合适的理财公告10.3.3将合格的PDF文件自动归档这个是一个简单的分析策略,大家可以根据自己的逻辑来写自己的分析策略,比如可以通过自然语言处理以及机器学习来进行更深度的分析,这边不再详述。如果想把这些筛选后的PDF文件存储到特定的文件夹,只需要补写如下代码:10.3PDF文本解析实战-寻找合适的理财公告10.3.3将合格的PDF文件自动归档其中第一行代码遍历刚刚筛选出来的PDF列表;第二行代码的话就是编写想要移动到的文件夹,这边有几个重要的注意点:注意点1:在写保存的文件夹的时候,这个文件夹一定要已经创建好了;注意点2:写保存的文件夹时候,不要在最后忘了多加两个反斜杠,比如'E:\\筛选后的文件夹\\'最后的两个反斜杠;注意点3:pdf_i.split(‘\\’)[-1]
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理不良事件环境因素
- 基于云平台的医疗数据安全传输技术研究报告
- 房产出售分割合同协议书模板
- 小程序运营成长路径
- 2026年中国稀土顺丁橡胶行业市场发展前景研究报告-智研咨询发布
- 吉林省大学社区就业指导
- 税务稽查2026年合规审查合同协议
- 护理解剖学中的解剖学方法
- 劳动法规及劳动合同管理规定解析
- 领导力及管理技能培训计划
- 小区物业水电工培训
- 硝酸安全操作规程培训
- 施工方案 外墙真石漆(翻新施工)
- 《中医辩证施护》课件
- 幕墙技术标(暗标)
- 管理会计学 第10版 课件 第6章 存货决策
- 三方协议解约函电子
- 三对三篮球赛记录表
- 电气自动化社会实践报告
- 【关于某公司销售人员招聘情况的调查报告】
- 拉肚子的故事知乎拉黄稀水
评论
0/150
提交评论