2014-12-19 138 views
0

我想解析www.amazon.com源HTML如下使用XML minidom。XML minidom解析錯誤

def start_parser(self, analysis_id, url): 
    dom = None 
    path = self.create_analysis_folder(analysis_id) 
    self.get_generated_html(url) 
    for root, dirs, files in os.walk(path): 
     for file in files: 
      if file.endswith('.html'): 
       dom = parseString(open(path + '/' +file).read()) 
       shutil.rmtree(os.getcwd()) 
     break 
    return dom 

的方法做了一些基本的文件夾操作,然後調用parseString給它的HTML源代碼。執行時出現以下錯誤。

xml.parsers.expat.ExpatError: not well-formed (invalid token): line 20, column 20

能有人請解釋這意味着什麼,以及如何擺脫它。

回答

0

這意味着HTML不是有效的XML,不能像這樣解析。格式良好的文件描述如下here

文檔源中出現無效令牌 - 查看HTML數據以查看導致問題的字符 - 可能是非轉義字符,例如, &而不是&。由於您解析了尚未撰寫的HTML,因此您可能會遇到其他問題,例如無與倫比的結束標籤等。

>>> from xml.dom.minidom import parseString 

>>> parseString('<html></html>') 
<xml.dom.minidom.Document instance at 0x7fc804d02ab8> 

>>> parseString('<html>&</html>') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib64/python2.7/xml/dom/minidom.py", line 1931, in parseString 
    return expatbuilder.parseString(string) 
    File "/usr/lib64/python2.7/xml/dom/expatbuilder.py", line 940, in parseString 
    return builder.parseString(string) 
    File "/usr/lib64/python2.7/xml/dom/expatbuilder.py", line 223, in parseString 
    parser.Parse(string, True) 
xml.parsers.expat.ExpatError: not well-formed (invalid token): line 1, column 7 

您應該使用HTML解析器,例如, BeautifulSouplxml.html