为什么从网站检索的xml看起来不像Web浏览器内容?

blz*_*blz 2 python http

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

您会注意到在Web浏览器中可以轻松读取xml数据.但是,当我尝试使用urllib2加载它时,会出现以下问题.(根据http://www.doughellmann.com/PyMOTW/urllib2/上的教程):

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

print response.read()
Run Code Online (Sandbox Code Playgroud)

输出:

'<?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'
Run Code Online (Sandbox Code Playgroud)

我已尝试过其他网站(例如:python.org),它似乎有效.这个问题似乎是独立于库的(我对urllib,httplib,httplib2等有同样的问题),问题似乎是我想要获取的网站特有的.

是什么赋予了?

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

小智 6

"如果在Web浏览器中加载页面,它看起来与显示的数据完全不同.我正在使用此信息更新问题."

当我使用Chrome获取该示例网址时,我会得到您使用Python代码获得的原始数据.

您的浏览器会自动神奇地检测XML并将其格式化为HTML.它与Python的"完全相同",即原始数据.浏览器让您对您应该期待的内容感到困惑.

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