本项目是全程运用Python实现的,分为三个代码实现三部分功能,本次讲解的是第二部分代码:从每一个生成的TXT年报文件中搜索自己制定的关键词并统计对应的出现次数到EXCEL表格中,想要代码和统计好的年报EXCEL文档的可以私聊我或者从最后的第三部分文章链接里的GitHub网站中下载哦 ❛‿˂̵✧
import os import re import jieba import xlwt
这部分代码是实现模块的导入和年报链接EXCEL表格的打开,如果没有安装库的则需要安装一下对应的Python的库。
def extract_keywords(filename, keywords): """ 从指定文件中提取关键词,并统计关键词出现次数。 """ keyword_counts = [0] * len(keywords) try: with open(filename, 'r', encoding='utf-8') as f: content = f.read() # 使用jieba库进行分词 words = jieba.cut(content) words = [word for word in words if word.strip()] # 统计关键词出现次数 for i, keyword in enumerate(keywords): keyword_counts[i] = words.count(keyword) except Exception as e: print(f"从文件中获取关键词失败!--- {filename}") print(str(e)) return keyword_counts
这个函数的作用是从指定文件中提取关键词,并统计关键词在文件中出现的次数。
函数接受两个参数:文件名(filename)和关键词列表(keywords)。
首先,函数创建一个与关键词列表长度相同的列表'keyword_counts',用于存储每个关键词在文件中出现的次数。
然后,函数尝试打开指定文件,并使用'utf-8'编码读取文件内容。
接下来,函数使用jieba库对文件内容进行分词,将分词结果存储在'words'列表中。
然后,函数使用列表推导式过滤掉空白字符,并将过滤后的分词结果重新赋值给'words'列表。
接着,函数使用循环遍历关键词列表,并使用'count'方法统计每个关键词在'words'列表中出现的次数,并将统计结果存储在'keyword_counts'列表中的相应位置。
最后,函数使用'try-except'语句捕获可能发生的异常,并在出现异常时打印错误信息。
函数返回'keyword_counts'列表,其中存储了每个关键词在文件中出现的次数。
总的来说,这个函数的作用是从指定文件中提取关键词,并统计关键词在文件中出现的次数。函数返回关键词出现次数的列表。
def process_files(folder_path, keywords): """ 处理指定文件夹中的所有txt文件,提取关键词并统计词频,将结果存储到Excel表格中。 """ # 创建Excel工作簿 workbook = xlwt.Workbook(encoding='utf-8') worksheet = workbook.add_sheet('Sheet1') row = 0 # 添加Excel表头 worksheet.write(row, 0, '股票代码') worksheet.write(row, 1, '公司简称') worksheet.write(row, 2, '年份') for i, keyword in enumerate(keywords): worksheet.write(row, i + 3, keyword) row += 1 # 获取文件总数 total_files = len([filename for filename in os.listdir(folder_path) if filename.endswith('.txt')]) processed_files = 0 # 遍历文件夹中的所有txt文件 for filename in os.listdir(folder_path): if filename.endswith('.txt'): # 解析文件名,提取股票代码、公司简称和年份 match = re.match(r'^(\d{6})_(.*?)_(\d{4})\.txt$', filename) if match: stock_code = match.group(1) company_name = match.group(2) year = match.group(3) # 提取关键词并统计词频 keyword_counts = extract_keywords(os.path.join(folder_path, filename), keywords) # 将结果写入Excel表格 worksheet.write(row, 0, stock_code) worksheet.write(row, 1, company_name) worksheet.write(row, 2, year) for i, count in enumerate(keyword_counts): worksheet.write(row, i + 3, count) row += 1 # 保存Excel文件 try: workbook.save('年报关键词搜索结果.xls') except Exception as e: print("文件保存失败!.") print(str(e))
这个函数的作用是处理指定文件夹中的所有txt文件,提取关键词并统计词频,然后将结果存储到Excel表格中。
函数接受两个参数:文件夹路径(folder_path)和关键词列表(keywords)。
首先,函数创建一个Excel工作簿(workbook)和一个工作表(worksheet),并设置编码为utf-8
。
然后,函数添加Excel表头,包括'股票代码'、'公司简称'和'年份',以及关键词列表中的每个关键词。
接着,函数初始化行数(row)为0,并递增行数,用于在工作表中写入数据。
函数使用os.listdir
函数获取文件夹中的所有文件名,并使用列表推导式过滤出以'.txt'结尾的文件,计算出总文件数(total_files)。
接下来,函数使用循环遍历文件夹中的所有txt文件。
对于每个txt文件,函数使用正则表达式解析文件名,提取股票代码、公司简称和年份。
然后,函数调用extract_keywords
函数提取关键词并统计词频,返回关键词出现次数的列表(keyword_counts)。
函数将股票代码、公司简称、年份和关键词出现次数写入Excel表格的相应位置。
最后,函数使用try-except
语句保存Excel文件,如果保存失败,则打印错误信息。
总的来说,这个函数的作用是处理指定文件夹中的所有txt文件,提取关键词并统计词频,将结果存储到Excel表格中。
if __name__ == '__main__': # 设置要提取的关键词列表 keywords = ['信息资源', '数据挖掘','数据源','数据共享','海量数据','大数据','数据平台','数据分析系统','基础信息','知识库','致辞'] # 处理文件夹中的所有txt文件,并将结果存储到Excel表格中 try: process_files('C://Users\末路歧途\Desktop\LC 爬取\年报TXT版', keywords) except Exception as e: print("文件处理失败!!") print(str(e))
这段代码是一个主程序,用于调用'process_files'函数来处理文件夹中的所有txt文件,并将结果存储到Excel表格中。
首先,代码定义了一个关键词列表'keywords',包含了要提取的关键词。
然后,代码使用'try-except'语句调用'process_files'函数,并传入文件夹路径和关键词列表作为参数。
如果处理过程中出现异常,代码会打印错误信息。
总的来说,这段代码的作用是设置要提取的关键词列表,然后调用'process_files'函数来处理文件夹中的所有txt文件,并将结果存储到Excel表格中。
总体代码如下代码:
import os
import re
import jieba
import xlwt
def extract_keywords(filename, keywords):
"""
从指定文件中提取关键词,并统计关键词出现次数。
"""
keyword_counts = [0] * len(keywords)
try:
with open(filename, 'r', encoding='utf-8') as f:
content = f.read()
# 使用jieba库进行分词
words = jieba.cut(content)
words = [word for word in words if word.strip()]
# 统计关键词出现次数
for i, keyword in enumerate(keywords):
keyword_counts[i] = words.count(keyword)
except Exception as e:
print(f"从文件中获取关键词失败!--- {filename}")
print(str(e))
return keyword_counts
def process_files(folder_path, keywords):
"""
处理指定文件夹中的所有txt文件,提取关键词并统计词频,将结果存储到Excel表格中。
"""
# 创建Excel工作簿
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('Sheet1')
row = 0
# 添加Excel表头
worksheet.write(row, 0, '股票代码')
worksheet.write(row, 1, '公司简称')
worksheet.write(row, 2, '年份')
for i, keyword in enumerate(keywords):
worksheet.write(row, i + 3, keyword)
row += 1
# 获取文件总数
total_files = len([filename for filename in os.listdir(folder_path) if filename.endswith('.txt')])
processed_files = 0
# 遍历文件夹中的所有txt文件
for filename in os.listdir(folder_path):
if filename.endswith('.txt'):
# 解析文件名,提取股票代码、公司简称和年份
match = re.match(r'^(\d{6})_(.*?)_(\d{4})\.txt$', filename)
if match:
stock_code = match.group(1)
company_name = match.group(2)
year = match.group(3)
# 提取关键词并统计词频
keyword_counts = extract_keywords(os.path.join(folder_path, filename), keywords)
# 将结果写入Excel表格
worksheet.write(row, 0, stock_code)
worksheet.write(row, 1, company_name)
worksheet.write(row, 2, year)
for i, count in enumerate(keyword_counts):
worksheet.write(row, i + 3, count)
row += 1
# 保存Excel文件
try:
workbook.save('年报关键词搜索结果.xls')
except Exception as e:
print("文件保存失败!.")
print(str(e))
if __name__ == '__main__':
# 设置要提取的关键词列表
keywords = ['信息资源', '数据挖掘','数据源','数据共享','海量数据','大数据','数据平台','数据分析系统','基础信息','知识库','致辞']
# 处理文件夹中的所有txt文件,并将结果存储到Excel表格中
try:
process_files('C://Users\末路歧途\Desktop\LC 爬取\年报TXT版', keywords)
except Exception as e:
print("文件处理失败!!")
print(str(e))
第三部分代码实现了从每一个生成的TXT年报文件中搜索自己制定的关键词并统计对应的出现次数到EXCEL表格中,和后面的两部分是相呼应的。下面是另外两部分的博客链接,想看的友友们可以自行查看哦!
GITHUB下载地址(包含三部分所有的代码和总结好的20年年报EXCEL表格):moluqitu/Python-crawler1: Python爬虫实现2003年~2022年三万+个公司年报的智能抓取与关键词次数统计 (github.com)https://github.com/moluqitu/Python-crawler1
大家可以自行下载哦❛‿˂̵✧