我有一系列的HTML文件,使用beautifuldsoup解析成一个文本文件。HTML文件的格式设置使其输出始终是文本文件中的三行,因此输出将类似于:Hello!
How are you?
Well, Bye!
但这也很容易83957
And I ain't coming back!
hgu39hgd
换言之,HTML文件的内容并不是每一个文件的标准,但它们总是产生三行。
所以,我想知道我应该从哪里开始,如果我想,然后采取的文本文件,是由美丽的汤和解析成一个CSV文件列,如(使用上述例子):Title Intro Tagline
Hello! How are you? Well, Bye!
83957 And I ain't coming back! hgu39hgd
从文本文件中剥离HTML的Python代码如下:import os
import glob
import codecs
import csv
from bs4 import BeautifulSoup
path = "c:\\users\\me\\downloads\\"
for infile in glob.glob(os.path.join(path, "*.html")):
markup = (infile)
soup = BeautifulSoup(codecs.open(markup, "r", "utf-8").read())
with open("extracted.txt", "a") as myfile:
myfile.write(soup.get_text())
我想我可以用这个来设置CSV文件中的列:csv.put_HasColumnNames(True)
csv.SetColumnName(0,"title")
csv.SetColumnName(1,"intro")
csv.SetColumnName(2,"tagline")
我的空白是如何在文本文件(extracted.txt)中一次迭代一行,当我到达一个新行时,将其设置为CSV文件中的正确单元格。文件的前几行是空的,每一组文本之间有许多空行。所以,首先我需要打开文件并阅读它:file = open("extracted.txt")
for line in file.xreadlines():
pass # csv.SetCell(0,0 X) (obviously, I don't know what to put in X)
另外,我不知道如何告诉Python继续读取文件,并将其添加到CSV文件直到完成。换句话说,无法确切地知道HTML文件中总共有多少行,因此我不能只是csv.SetCell(0,0) to cdv.SetCell(999,999)