【问题标题】:Why does xml retrieved from a site not look like web browser content?为什么从站点检索到的 xml 看起来不像 Web 浏览器内容?
【发布时间】:2012-03-12 15:13:07
【问题描述】:

我一直在尝试获取此处找到的 xml 数据:http://www.thetvdb.com/api/D1BD82E2AE599ADD/mirrors.xml

您会注意到 xml 数据很容易在您的网络浏览器中读取。但是,当我尝试使用 urllib2 加载它时,会出现以下问题。 (基于http://www.doughellmann.com/PyMOTW/urllib2/上的教程):

import urllib2
response = urllib2.urlopen('http://www.thetvdb.com/api/D1BD82E2AE599ADD/mirrors.xml')

print response.read()

输出:

'<?xml version="1.0" encoding="UTF-8" ?>\n<Mirrors>\n  <Mirror>\n    <id>1</id>\n    <mirrorpath>http://thetvdb.com</mirrorpath>\n    <typemask>7</typemask>\n  </Mirror>\n</Mirrors>\n'

我已经尝试过其他网站(例如:python.org),它似乎可以工作。问题似乎与库无关(我在 urllib、httplib、httplib2 等方面也遇到过同样的问题),而且问题似乎特定于我要获取的站点。

什么给了?

编辑:好吧,好像我对我“应该”看到的内容感到困惑。出于好奇,有人知道“脚本”部分是什么吗?我正在使用谷歌浏览器(稳定版)查看页面。

【问题讨论】:

  • 你有输出。那么有什么问题呢?
  • 你在说什么错误?输出对我来说看起来很好。
  • 你的问题是什么?您的 xml 似乎是有效的,您是否尝试使用 xml 库对其进行解析?
  • @Celada 我是吗?它看起来与在 Web 浏览器中加载页面时显示的数据完全不同。我正在使用此信息更新问题...
  • @CédricJulien 我希望看到我的网络浏览器中出现的确切内容,但也许这是一个愚蠢的假设。不过,为什么整个脚本部分都不见了?

标签: python http


【解决方案1】:

“它看起来与网页在网络浏览器中加载时显示的数据完全不同。我正在用这些信息更新问题..”

当我使用 Chrome 获取该示例 URL 时,我得到的正是您使用 Python 代码得到的内容,即原始数据

您的浏览器会自动检测 XML 并将其格式化为 HTML。它与 Python 得到的“完全相同”,即 原始数据。浏览器让您对预期的结果感到困惑。

注意:不要相信您所看到的或通过开发者工具信息报告的内容,它会向您显示 HTML在这种情况下,Chrome 神奇地生成了一个围绕输出的生成包装器,以启用带有代码折叠 ( JavaScript ) 和所有其他 bling 的 XML 的交互式显示,而不是服务器实际发送给您的内容,这是您应该在何时看到的内容您使用查看源代码

【讨论】:

  • 感谢您的回复!这很好听。我将继续使用 xml 库对其进行解析,但出于好奇,我看到的这个额外的“脚本”部分是什么(运行 google chrome)?
  • 我在 Win 7 上使用 Chrome,我在 XML 中看不到脚本元素。打开的时候你有没有做一些特别的事情?
【解决方案2】:

在某些情况下,网站会提供一个样式表,告诉它如何将原始 XML 转换为 (X)HTML,因此呈现和文字内容可能会有很大不同。但是——我在这里看不到;我得到的(在 Chrome 或 Firefox 中)你给出的 URL 看起来 完全就像你的脚本给你的一样,所以我不知道你在哪里得到了不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-12
    • 1970-01-01
    相关资源
    最近更新 更多