我想解析數千個HTML文件。我正在使用BeautifulSoup包。單個HTML文件中的多個文檔
我的HTML文檔存在的問題是,它們包含ASCII編碼格式的圖形。 BeautifulSoup包無法刪除這些字符。
好的是,有一種方法可以識別這些HTML文檔中存儲了圖形的段。但我是Python新手,無法在使用BeautifulSoup解析文檔之前找出如何刪除這些段。
所有的HTML文件含有如下所示多個文檔:
<DOCUMENT>
<TYPE>EX-1
<SEQUENCE>1
<FILENAME>
<DESCRIPTION>
<TEXT>
<html>
.
.
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-2
.
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-3
.
</DOCUMENT>
<DOCUMENT>
<TYPE>GRAPHIC
.
</DOCUMENT>
如上圖所示,此HTML文件包含4號文件和最後一個文檔類型爲「圖形」包含圖形。我想從類型爲「GRAPHIC」的HTML文件中刪除所有這些文檔。
從這個HTML文件中刪除所有這些圖形後,我打算使用BeautifulSoup包來提取文本。
請幫助我刪除這些類型爲GRAPHIC的文檔。
這是我的代碼。此代碼能夠讀取HTML文件並將整個文本部分寫入另一個文件。問題是這個代碼也寫圖形內容。
import os
import time
import traceback
import glob
from bs4 import BeautifulSoup
import html5lib
path = "E:\\"
def extract():
for file in glob.glob(os.path.join(path, '*.html')):
try:
file_name = str(file).split(".txt")[0].replace("E:\\","")
outfile = open(file_name.replace(".html","")+".txt",'w')
htmlfile = open(file,"r")
rfile = "".join(htmlfile.readlines())
htmlfile.close()
rsoup = BeautifulSoup(rfile,'html5lib')
documents = rsoup.find_all('document')
#REMOVE HMTL TAGS AND EXTRACT TEXTUAL CONTENT OF HTML FILE
a = '\n'.join([e.encode("utf-8").replace("\n","").replace("\r","").replace("\s","").replace("\t","").strip() for e in rsoup.recursiveChildGenerator() if isinstance(e,unicode) and e.strip()!=""])
outfile.write(str(a))
outfile.close()
#print a
#SUSPEND EXECUTION FOR 5 SECONDS
time.sleep(5)
except:
print "Status: Parsing Failed"
extract()
感謝
告訴我們你做了什麼 – 2014-09-04 07:53:05
爲什麼你想刪除這些部分_before_使用BeautifulSoup?只需使用BeautifulSoup解析文件,然後使用它刪除要刪除的部分。 – abarnert 2014-09-04 08:10:05
@abarnert ...我在這裏發佈了我的代碼。我不知道如何根據其類型刪除特定的文檔。請幫助我使用哪個命令/函數。謝謝 – Ankit 2014-09-04 08:14:16