2017-09-04 121 views
0

我的問題更多的是在「概念」方面,因爲我還沒有任何代碼可以顯示。我基本上可以訪問一個網站的API資源管理器,但是當我在API資源管理器中放置一個特定的URL時檢索到的信息與我打開一個具有相同URL的網頁的HTML信息不一樣「檢查」了這些要素。我誠實地失去了如何檢索我需要的數據,因爲它們只存在於API Explorer中,但無法通過網絡抓取訪問。如何從API Explorer中檢索數據?

這裏向你展示我的意思的例子:

API瀏覽器鏈接: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/)我自己和「檢查元素」,這條信息:

html version

不具有所有的相同數據:

API Explorer

例如,語言計數,audLevel,oclcnum和其他許多人都沒有在HTML版本存在,但在API瀏覽器和與其他作者,流派計數只存在於API Explorer中。

我知道一個是在xml中,另一個是在html中,所以這就是爲什麼兩個版本中的數據不一樣?不管是什麼原因,我能做些什麼來檢索只存在於API Explorer中的數據? (如流派數,audLevel,oclcnum等)

任何見識都會非常有幫助。

回答

0

對於不顯示所有數據的站點來說,這並不罕見,這些數據位於基礎json/xml中。這些東西往往會保存有趣的內容,而不會在現場任何地方顯示。

在這種情況下,服務器給你,你要求什麼。如果你要使用Python來獲取數據,那麼你真正需要做的就是在你的頭文件中指定你所追求的內容。如果你沒有在這個網站上做到這一點,你會得到html的東西。

如果你喜歡這個,你會得到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) 

然後,所有你需要做的是提取內容,你後。這可以通過許多方式完成。讓我知道這是否有助於你。

+0

非常感謝,真的有幫助!出於好奇,你如何獲得輸出使用換行符?我的輸出在一行中包含所有的xml。此外,還有什麼可能的方式來提取內容?我見過其他帖子提示fromstring(xml).find(),但我不確定它是如何發生的。 –

+0

我用兩行來更新了答案,以便打印出漂亮的xml。如果您在提取數據方面需要幫助,請查看已在SO上就此問題提供的許多答案。如果這些都不能幫助您進一步開啓一個新的問題,那麼您將展示您的嘗試。我確信,一旦你證明你實際上已經付出了努力,有人會從那裏幫助你。 – jlaur