2017-09-04 6 views
0

私の質問は、まだ表示されるコードがないため、「概念」側にあります。私は基本的にウェブサイトのAPIエクスプローラーにアクセスできましたが、APIエクスプローラーに特定のURLを置いたときに取得される情報は、同じURLでウェブページを開いた場合のHTML情報と同じではありません。要素を「点検する」。私は正直なところ、API Explorerにしか存在していてもWebスクレイピングではアクセスできないため、必要なデータを取り出す方法が失われています。APIエクスプローラからデータを取得する方法は?

API Explorerのリンク:https://platform.worldcat.org/api-explorer/apis/worldcatidentities/identity/Read

と要求に固有のURLは次のとおりです。私は、URLを入れた場合http://www.worldcat.org/identities/lccn-n80126307/

http://www.worldcat.org/identities/lccn-n80126307/)ここで

は、私が何を意味するかをお見せする例です。

html version

:私自身はと、情報のこの作品を "要素を調査します"

API Explorer

は、例えば、言語数は、audLevelは、oclcnumおよび他の多くは、HTMLバージョンに存在していないが、APIエクスプローラでと他の著者である:として0

はすべて同じデータを持っていません。 、ジャンル数はAPIエクスプローラにのみ存在します。

私はxmlに、もう1つは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を1行にまとめています。また、コンテンツを抽出するにはどのような方法がありますか?私はfromstring(xml).find()を提案している他の投稿を見たことがありますが、どうなるか分かりません。 –

+0

私はきれいな印刷xmlのためにいくつかの行で答えを更新しました。データを抽出する際に助けが必要な場合は、そのSOの既定の多くの回答を確認してください。これらのどれも役立たない場合は、新しい質問をさらに開き、あなたの試行を紹介してください。私はあなたが実際に最初にそれに努力を払っていることを実証したら、誰かがそこからあなたを助けることを確信しています... – jlaur

関連する問題