gpt4 book ai didi

jquery - 使用jquery从wikimedia解析json字符串

转载 作者:行者123 更新时间:2023-12-01 03:00:42 25 4
gpt4 key购买 nike

我试图从维基页面获取信息框。为此,我使用 wiki api。以下是我从中获取 json 数据的 url。

http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=json&titles= “+第一个+”&rvsection=0

其中第一个是包含维基百科文章标题的变量。

我发现解析这些数据并从中生成有意义的 html 非常复杂。

我最初使用的是$.each函数。但循环非常深,我不得不使用 6-7 次才能获得我想要的实际数据。我认为会有比这更好的选择。请帮助我。

json数据供引用

jQuery16209061950308827726_1334683337112({"query":{"pages":{"11039790":{"pageid":11039790,"ns":0,"title":"Animal","revisions":[{"*":"{{Redirect|Animalia}}\n{{Other uses}}\n{{pp-semi-protected|small=yes}}\n{{pp-move-indef}}\n{{Taxobox\n| color = {{taxobox color|[[animalia]]}}\n| name = Animals\n| fossil_range = [[Ediacaran]] \u2013 Recent {{fossilrange|610|0|}}\n| image = Animal diversity.png\n| image_width = 250px\n| domain = [[Eukaryota]]\n{{Taxobox_norank_entry | taxon = [[Opisthokonta]]}}\n{{Taxobox_norank_entry | taxon = [[Holozoa]]}}\n{{Taxobox_norank_entry | taxon = [[Filozoa]]}}\n| regnum = '''Animalia'''\n| regnum_authority = [[Carolus Linnaeus|Linnaeus]], [[Systema Naturae|1758]]\n| subdivision_ranks = [[Phylum|Phyla]]\n| subdivision =\n* '''Subkingdom [[Parazoa]]'''\n** [[Sponge|Porifera]]\n** [[Placozoa]]\n* '''Subkingdom [[Eumetazoa]]'''\n** '''[[Radiata]] (unranked)'''\n*** [[Ctenophora]]\n*** [[Cnidaria]]\n** '''[[Bilateria]] (unranked)'''\n*** [[Orthonectida]]\n*** [[Rhombozoa]]\n*** [[Acoelomorpha]]\n*** [[Chaetognatha]]\n*** '''Superphylum [[Deuterostomia]]'''\n**** [[Chordata]]\n**** [[Hemichordata]]\n**** [[Echinoderm]]ata\n**** [[Xenoturbellida]]\n**** [[Vetulicolia]] [[extinction|\u2020]]\n*** '''[[Protostomia]] (unranked)'''\n**** '''Superphylum [[Ecdysozoa]]'''\n***** [[Kinorhyncha]]\n***** [[Loricifera]]\n***** [[Priapulida]]\n***** [[Nematoda]]\n***** [[Nematomorpha]]\n***** [[Lobopodia]]\n***** [[Onychophora]]\n***** [[Tardigrada]]\n***** [[Arthropoda]]\n**** '''Superphylum [[Platyzoa]]'''\n***** [[Platyhelminthes]]\n***** [[Gastrotricha]]\n***** [[Rotifera]]\n***** [[Acanthocephala]]\n***** [[Gnathostomulida]]\n***** [[Micrognathozoa]]\n***** [[Cycliophora]]\n**** '''Superphylum [[Lophotrochozoa]]'''\n***** [[Sipuncula]]\n***** [[Hyolitha]] [[extinction|\u2020]]\n***** [[Nemertea]]\n***** [[Phoronida]]\n***** [[Bryozoa]]\n***** [[Entoprocta]]\n***** [[Brachiopoda]]\n***** [[Mollusca]]\n***** [[Annelida]]\n***** [[Echiura]]\n}}\n\n'''Animals''' are a major group of multicellular, [[eukaryotic]] [[organism]]s of the [[Kingdom (biology)|kingdom]] '''Animalia''' or '''Metazoa'''. Their [[body plan]] eventually becomes fixed as they [[Developmental biology|develop]], although some undergo a process of [[metamorphosis]] later on in their life. Most animals are [[Motility|motile]], meaning they can move spontaneously and independently. All animals are also [[heterotroph]]s, meaning they must ingest other organisms or their products for [[sustenance]].\n\nMost known animal [[phylum|phyla]] appeared in the fossil record as marine species during the [[Cambrian explosion]], about 542 million years ago."}]}}}})

最佳答案

如果您想要维基页面中显示的实际 html,请使用 action=parse反而。是的,结果对象是深度嵌套的。但没有理由循环它们!

  • 第一个属性始终是操作,此处:查询
  • 您已请求页面属性,因此您将收到页面
  • 由页面 id 指定。这是使用循环的唯一步骤
  • 每个页面对象都有特定的属性(例如标题),您对修订感兴趣
  • 这是一个修订对象数组,您需要唯一且第一个
  • 修订对象的 sourcetext 属性是 *

所以,就这样做吧:

if (data && data.query && data.query.pages)
var pages = data.query.pages;
else
// error: No pages returned / other problems!
for (var id in pages) { // in your case a loop over one property
if (pages[id].revisions && pages[id].revisions[0] && pages[id].revisions[0]["*"])
var content = pages[id].revisions[0]["*"];
else
// error: No revision content returned for whatever reasons!
}
// use "content" variable here

不要忘记检查每个对象是否存在!如果您没有请求任何页面,则不会有页面对象;仅当页面“数组”为空时才会出现这种情况。页面可能缺少/无效标题或其他内容,因此没有修订。等等

关于jquery - 使用jquery从wikimedia解析json字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10196222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com