python - 读取页面并使用 Python 中的 minidom.parse 或 minidom.parseString 解析它?

标签 python

我有以下代码之一:

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)、html5libBeautifulSoup(它将较低级别的解析器包装在一个非常好的界面中)。

* 好吧,除非它是 XHTML,或者 HTML5 的 XML 输出,但这里不是这种情况。

** 不要使用 htmllib,除非您使用的是旧版本的 Python,且没有可用的 HTMLParser。由于某种原因,该模块已被弃用。

关于python - 读取页面并使用 Python 中的 minidom.parse 或 minidom.parseString 解析它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25070790/

相关文章:

python - 读取多个blast文件(biopython)

python - 灰度共生矩阵//Python

python sqlite3 查询.db文件的表名和列名

Python Turtle 窗口 - 设置(或获取)窗口边框的精确像素大小?

python - 嵌套 while 循环在 python 中无法正确循环

python - 如何从 Twisted 中延迟 Django DB 操作?

python - 来自 "Generic related"模型的 Django 表单

python - ARINC429 构词法

python - Flickr API : Upload an image with python

python - 如何获取不相交子图中的所有节点 - neo4j/py2neo