Python爬虫实现2003年~2022年三万+个公司年报的智能抓取与关键词次数统计(第三部分代码-共三部分):从每一个生成的TXT年报文件中搜索自己制定的关键词并统计对应的出现次数到EXCEL表格中

        本项目是全程运用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表格中,和后面的两部分是相呼应的。下面是另外两部分的博客链接,想看的友友们可以自行查看哦!

第一部分博客链接:Python爬虫实现2003年~2022年三万+个公司年报的智能抓取与关键词次数统计(第一部分代码-共三部分):从统计好的EXCEL表格中自动进行公司年报的下载地址的捕捉并下载年报PDF-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_57339667/article/details/133849833

第二部分博客链接:Python爬虫实现2003年~2022年三万+个公司年报的智能抓取与关键词次数统计(第二部分代码-共三部分):将下载好的未加密的PDF年报转为TXT文件并将加密的PDF文件解密后转为TXT文件-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_57339667/article/details/134348942

GITHUB下载地址(包含三部分所有的代码和总结好的20年年报EXCEL表格):moluqitu/Python-crawler1: Python爬虫实现2003年~2022年三万+个公司年报的智能抓取与关键词次数统计 (github.com)icon-default.png?t=N7T8https://github.com/moluqitu/Python-crawler1

大家可以自行下载哦❛‿˂̵✧

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值