python金融数据挖掘与分析(六)——解析上市公司PDF公告

@[toc]
这篇博文主要介绍通过数据挖掘技术批量下载菊草资讯网的上市公司理财公告PDF文件,并通过PDF文本解析技术分析获取到的理财公告PDF文件,从中识别潜在的机构投资者。
1. PDF文件批量下载 在金融网站数据挖掘实战这篇博文中,我们介绍了在巨潮资讯网爬取公告信息的方法,该方法可以作文本文工作的基础,并在爬取多页内容、自动筛选所需内容,爬取某段时间的数据,理财公告PDF文件自动下载等功能方面进行扩展。
1.1 爬取多页内容 之前介绍过,我们可以通过修改网页参数的方式爬取多页内容,但是这在巨潮资讯网不适用,因为进行翻页操作时,网址并没有发生变化。此时可以利用Selenium库模拟鼠标单击下图所示的“下一页”按钮,并根据公告数量来确定模拟单击的次数,每单击一次就获取一下改业的源代码,最后把获取到的各页的源代码存储到一个列表里。
模拟翻页的代码如下:

browser = webdriver.Chrome() url = 'http://www.cninfo.com.cn/new/fulltextSearch?notautosubmit=&keyWord=理财' browser.get(url) time.sleep(3) browser.find_element_by_xpath('//*[@id="fulltext-search"]/div/div[1]/div[2]/div[4]/div[2]/div/button[2]').click()

【python金融数据挖掘与分析(六)——解析上市公司PDF公告】上面的代码可以实现自动翻页功能,下面需要实现控制翻页的次数,也就是获取总页数,每页显示10条公告,所以公告总数除以10可得到总
页数。
data = https://www.it610.com/article/browser.page_source page_pattern ='约\s*(.*?)\s*条 当前显示.*?条' count = re.findall(page_pattern, data)[0] pages = int(int(count)/10)

findall()函数返回的是一个列表,因此要想获取列表中的元素,需要使用索引。
将上面两项功能结合起来,实现每次翻页时都获取当前页面的源码,并把每一页的源码存储到data_list列表中,代码如下:
# 每次翻页时都获取当前页面的源码,并把每一页的源码存储到data_list列表中 data_list = [] data_list.append(data) # for i in range(pages): for i in range(3): browser.find_element_by_xpath('//*[@id="fulltext-search"]/div/div[1]/div[2]/div[4]/div[2]/div/button[2]').click() time.sleep(2) data = https://www.it610.com/article/browser.page_source data_list.append(data) time.sleep(1)# 将所有源码转换成一个字符串,方便进行正则化处理 alldata =''.join(data_list) browser.quit()# 提取标题、链接及日期数据 '' title_pattern = '(.*?)' href_pattern = '.*?href="https://www.it610.com/article/(.*?)" data-id=' date_pattern = '

    推荐阅读