【问题标题】:Using Python to get a field in XML from URL使用 Python 从 URL 获取 XML 中的字段
【发布时间】:2012-10-18 15:37:56
【问题描述】:

我正在尝试从 URL 的 XML 文件中的特定字段获取信息。在我开始尝试之前,我就遇到了这些奇怪的错误。这是我的代码:

url1 = 'http://www.dac.unicamp.br/sistemas/horarios/grad/G5A0/indiceP.htm'
data1 = urllib.urlopen(url1)
xml1 = minidom.parse(data1)

我收到此错误:

File "C:\Users\Administrator\Desktop\teste.py", line 15, in <module>
    xml1 = minidom.parse(data1)
  File "C:\Python27\lib\xml\dom\minidom.py", line 1920, in parse
    return expatbuilder.parse(file)
  File "C:\Python27\lib\xml\dom\expatbuilder.py", line 928, in parse
    result = builder.parseFile(file)
  File "C:\Python27\lib\xml\dom\expatbuilder.py", line 207, in parseFile
    parser.Parse(buffer, 0)
ExpatError: not well-formed (invalid token): line 4, column 22

我做错了吗?我从教程中复制了这些功能,它似乎应该可以工作..

【问题讨论】:

  • 页面好像不是xhtml有效的,试试beautifulsoup吧。
  • @luke14free 哦,那是一回事吗?因此,如果页面对 XML 解析无效,还有其他方法可以获得我想要的信息吗?如果您进入页面,您会在右上角看到“Verão/2012”,这就是我要查找的字段。
  • 试试这个:validator.w3.org 只需将 url 粘贴到地址输入字段中

标签: python xml url xml-parsing python-2.7


【解决方案1】:

使用lxml.html,它可以更好地处理无效的xhtml。

import lxml.html as lh
In [24]: xml1=lh.parse('http://www.dac.unicamp.br/sistemas/horarios/grad/G5A0/indiceP.htm')

【讨论】:

  • @root 我听说过 BeautifulSoup 的好消息。他们如何比较?
  • 有人说 BS 可以更好地处理格式错误的源,但根据个人经验,lxml.html 也可以。对于格式良好的来源,我会说,lxml 是优越的。 lxml 也快得多。
猜你喜欢
  • 2020-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-30
  • 1970-01-01
  • 1970-01-01
  • 2021-10-30
  • 1970-01-01
相关资源
最近更新 更多