python 将html文件转化为txt文件
①需求:一千多篇乌云知识库的文章,收集下来后是html文件,需要将它们都转化为txt文件。由于本人又菜又懒,找了很久代码想要ctrl+c和ctrl+v大佬的,然后收工,然而没有找到好使的代码。下了一个转化工具,但是转化效果不太好,只好苦逼的研究一下代码了(害无非就是循环读取html文件,再进行编码转化,再保存到txt文件罢了),文件的编码格式真是博大精深,菜鸡不想深入苦海,以下的代码仅供参考哦~欢迎大佬指点。
②目的:将一个文件夹下的所有html文件转化为txt文件,并放入另外一个文件夹下(也就是一个漏漏的文件转化器),在可爱的jupyter上运行。
(1)开始转化
# -*- coding:utf-8 -*-
import os
import nltk
from bs4 import BeautifulSoup
# root_dir为要读取文件的根目录
root_dir = r"C:\\Users\\z\\Desktop\\drops_html版"
# 依次读取根目录下的每一个文件
for file in os.listdir(root_dir):
file_name = root_dir + "\\" + file
filein = open(file_name, "rb")
#将html转化为txt,用变量bb来暂时保存转化后的txt文本
bb = BeautifulSoup(filein).get_text()
with open("C:\\Users\\z\\Desktop\\temp\\{0}.txt".format(file),"a",encoding="gb18030") as file_handle: # .txt可以不自己新建,代码会自动新建
file_handle.write(bb) #将txt文本依次写入文件夹中
file_handle.write('\n')
(2)删除txt文本的空行
转化后的txt文件太太太多空行了,将其删除
import sys
import os
# root_dir为要读取文件的根目录
root_dir = r"C:\\Users\\z\\Desktop\\temp"
# 依次读取根目录下的每一个文件
for file in os.listdir(root_dir):
file_name = root_dir + "\\" + file
filein = open(file_name, "r",encoding="gb18030")
# txt可以不自己新建,代码会自动新建
with open("C:\\Users\\z\\Desktop\\txt\\{0}".format(file),"a",encoding="gb18030") as fnew:
#对每一行先删除空格,\n等无用的字符,再检查此行是否长度为0
for line in filein.readlines():
data=line.strip()
if len(data)!=0:
fnew.write(data)
fnew.write('\n')