我有以下代码之一:
import urllib
from xml.dom import minidom
res = urllib.urlopen('https://www.google.com/webhp#q=apple&start=10')
dom = minidom.parse(res)
这给了我错误xml.parsers.expat.ExpatError:语法错误:第1行,第0列
或者这个:
import urllib
from xml.dom import minidom
res = urllib.urlopen('https://www.google.com/webhp#q=apple&start=10')
dom = minidom.parseString(res.read())
这给了我同样的错误。 res.read()
读取良好并且是一个字符串。
我想稍后解析一下代码。如何使用 xml.dom.minidom
执行此操作?
最佳答案
您收到此错误的原因是该页面不是有效的 XML。它是 HTML 5。即使您忽略内容类型,顶部的 doctype
也会告诉您这一点。您无法使用 XML 解析器解析 HTML。*
如果您想坚持使用 stdlib 中的内容,可以使用 html.parser
(Python 3.x)/HTMLParser
(2.x).** 但是,您可能需要考虑第三方库,例如 lxml
(尽管名称如此,它可以解析 HTML)、html5lib
或BeautifulSoup
(它将较低级别的解析器包装在一个非常好的界面中)。
* 好吧,除非它是 XHTML,或者 HTML5 的 XML 输出,但这里不是这种情况。
** 不要使用 htmllib
,除非您使用的是旧版本的 Python,且没有可用的 HTMLParser
。由于某种原因,该模块已被弃用。
关于python - 读取页面并使用 Python 中的 minidom.parse 或 minidom.parseString 解析它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25070790/