【问题标题】:How to retrieve data from API Explorer?如何从 API Explorer 中检索数据?
【发布时间】:2018-02-12 22:04:14
【问题描述】:

我的问题更多是在“概念”方面,因为我还没有任何代码可以显示。我基本上可以访问网站的 API Explorer,但是当我在 API Explorer 中放置特定 url 时检索到的信息与我打开具有相同 url 的网页时获得的 html 信息不同,并且“检查”元素。老实说,我不知道如何检索我需要的数据,因为它们只存在于 API Explorer 中,但无法通过网络抓取访问。

这里有一个例子来说明我的意思:

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

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

如果我自己输入 url (http://www.worldcat.org/identities/lccn-n80126307/) 和“检查元素”,这条信息:

没有与以下所有相同的数据:

例如,语言计数、audLevel、oclcnum 和许多其他在 html 版本中不存在,但在 API Explorer 和其他作者中,流派计数仅存在于 API Explorer 中。

我意识到一个在 xml 中,另一个在 html 中,所以为什么两个版本中的数据不一样?不管是什么原因,我能做些什么来检索仅存在于 API Explorer 中的数据? (如流派数、audLevel、oclcnum等)

任何见解都会非常有帮助。

【问题讨论】:

    标签: python html xml api web-scraping


    【解决方案1】:

    网站不显示所有数据并不罕见,这些数据位于底层 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)
    

    那么你所要做的就是提取内容,你就在后面。这可以通过多种方式完成。如果这对您有帮助,请告诉我。

    【讨论】:

    • 非常感谢,这真的很有帮助!出于好奇,如何让输出使用换行符?我的输出在一行中包含所有 xml。还有,有什么可能的方法来提取内容?我看过其他建议 fromstring(xml).find() 的帖子,但我不太确定它是怎么回事。
    • 我用几行更新了答案,以便打印漂亮的 xml。如果您在提取数据方面需要帮助,请查看已就该主题给出的许多答案中的一些。如果这些都不能帮助您进一步提出一个新问题,您可以在其中展示您的尝试。我敢肯定,一旦您证明您确实首先付出了努力,就会有人从那里帮助您...
    猜你喜欢
    • 2019-03-16
    • 2013-12-17
    • 2020-02-13
    • 2014-02-12
    • 2012-03-09
    • 2016-07-22
    • 1970-01-01
    • 2021-09-08
    • 2015-06-11
    相关资源
    最近更新 更多