如何从API Explorer中检索数据?

时间:2017-09-04 16:16:41

标签: python html xml api web-scraping

我的问题更多的是"概念"因为我还没有显示任何代码。我基本上可以访问网站的API资源管理器,但是当我在API资源管理器中放入特定网址时检索到的信息与我打开网页时获得的html信息不同。相同的网址和"检查"要素。我真的迷失了如何检索我需要的数据,因为它们只存在于API资源管理器中,但无法通过网络抓取进行访问。

这是一个向您展示我的意思的例子:

API Explorer链接:https://platform.worldcat.org/api-explorer/apis/worldcatidentities/identity/Read

要请求的具体网址是:http://www.worldcat.org/identities/lccn-n80126307/

如果我自己输入网址(http://www.worldcat.org/identities/lccn-n80126307/)并且"检查元素",这条信息:

html version

没有与以下相同的数据:

API Explorer

例如,html版本中不存在语言计数,audLevel,oclcnum和许多其他语言,但是在API资源管理器中,与其他作者一样,类型计数仅存在于API资源管理器中。

我意识到一个是xml而另一个是html,那么为什么两个版本的数据不一样?无论是什么原因,我该怎么做才能检索仅在API Explorer中出现的数据? (如流派计数,audLevel,oclcnum等)

任何见解都会非常有用。

1 个答案:

答案 0 :(得分:0)

网站没有显示所有数据,这在基础json / xml中并不罕见。这些类型的东西通常包含有趣的内容,这些内容不会在现场任何地方显示。

在这种情况下,服务器会根据您的要求提供给您。如果您要使用Python来获取数据,那么您真正需要做的就是在标题中指定您所追求的内容。如果你不在这个网站上这样做,你会得到html-stuff。

如果您喜欢这样,您将获得您感兴趣的xml数据:

import requests
import xml.dom.minidom

url = 'https://www.worldcat.org/identities/lccn-n80126307/'
r = requests.get(url, headers={'Accept': 'application/json'})

# a couple of lines for printing the xml pretty
xml = xml.dom.minidom.parseString(r.text)
pretty_xml_as_string = xml.toprettyxml()
print(pretty_xml_as_string)

然后你所要做的就是提取内容,你要追求的。这可以通过多种方式完成。如果这有助于你,请告诉我。