【问题标题】:xml data scraping more advanced than me [closed]xml数据抓取比我更先进[关闭]
【发布时间】:2016-12-17 16:14:15
【问题描述】:

感谢您的光临并了解我是新手。所以对某些人来说似乎很容易的事情对我来说是新的。

我对如何使用 javascript 和/或 php 从 .xml 文件中提取数据进行了一些研究。我还可以使用 html5 画布(构造 2)将此 .xml 数据拉入移动应用程序

我的问题与节点本身无关,但又是这样。

如果节点有这样的文本会更容易。

<item>Hi There</item>

而不是像我希望抓取的子节点。

<item game="powerball" nextjp="$67 Million" nextdd="Wednesday, August 10, 2016" winnum="20-33-36-47-52 PB12 X3" windd="Saturday, August 6, 2016" myflv="widget_pb.flv" winnumNM="20-33-36-47-52 PB12" name="POWERBALL">

我希望分解节点以便读取

Game
Next Jackpot
Next drawing
Winning Numbers
Game Played Date

如果我能找到一个已经为每个节点而不是所有节点都包含在一个节点中的 xml,那对我来说会很容易。因此,话虽如此,我不需要完整详细的脚本演示,我只需要对如何获取子节点数据进行基本概述。谢谢杰里米 C。

【问题讨论】:

  • @JaromandaX 感谢您的洞察力,我会和他聊天。但是在我等待回复的同时,您对这个问题有何看法?
  • 您好@Iceman,感谢您的光临,您有什么想法吗?这是怎么做的?它是像 item.game.text 还是我离基地很远。由于大多数编码都非常简单。因此,一旦掌握了基础知识,就不会很难理解。
  • 你如何在 php 中解析 xml,如果这实际上是你在做什么?
  • 你好@Iceman,我有一个从外部 url .xml 文件中提取节点数据的 Javascript。这很简单。但没有关于子节点的文档
  • cud你把链接添加到你的xml?

标签: javascript jquery ajax xml html


【解决方案1】:

在这种情况下,我从一个字符串加载了整个 XML。在实际情况下,您可能需要使用 ajax 来拉取它。

注意:您在 cmets 中添加的 URL(我从中获取此 xml)没有“Allow * Origin Header”,因此,来自那里的 ajax 将创建一个 CORS 错误。

var xml = '<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Florida Lottery Winning Numbers</title><link>http://www.flalottery.com</link><description>Florida Lottery winning number drawing results for  FLORIDA LOTTO, MEGA MILLIONS, POWERBALL, LUCKY MONEY, FANTASY 5, Midday and Evening PICK 2, PICK3, PICK 4 and PICK 5</description><item game="powerball" nextjp="$67 Million" nextdd="Wednesday, August 10, 2016" winnum="20-33-36-47-52 PB12 X3" windd="Saturday, August 6, 2016" myflv="widget_pb.flv" winnumNM="20-33-36-47-52 PB12" name="POWERBALL"><title>POWERBALL Drawing Results</title><link>http://www.flalottery.com/powerball.do</link><description>POWERBALL winning numbers are 20-33-36-47-52 PB12 X3 for 08/06/2016 and the next estimated Jackpot is $67 Million for 08/10/2016</description><pubDate>Wed, 10 Aug 2016 22:11:46 EST</pubDate><guid>http://www.flalottery.com/powerball.do</guid></item><item game="lotto" nextjp="$12 Million" nextdd="Wednesday, August 10, 2016" winnum="1-22-27-40-42-53 X3" windd="Saturday, August 6, 2016" myflv="widget_l6.flv" name="FLORIDA LOTTO"><title>FLORIDA LOTTO Drawing Results</title><link>http://www.flalottery.com/lotto.do</link><description>FLORIDA LOTTO with Xtra winning numbers are 1-22-27-40-42-53 X3 for 08/06/2016 and the next Jackpot is $12 Million for 08/10/2016</description><pubDate>Wed, 10 Aug 2016 22:11:46 EST</pubDate><guid>http://www.flalottery.com/lotto.do</guid></item><item game="fan5" winnum="3-23-25-33-34" windd="Tuesday, August 9, 2016" myflv="widget_f5.flv" name="FANTASY 5"><title>FANTASY 5 Drawing Results</title><link>http://www.flalottery.com/fantasy5.do</link><description>FANTASY 5 winning numbers are 3-23-25-33-34 for 08/09/2016</description><pubDate>Wed, 10 Aug 2016 22:11:46 EST</pubDate><guid>http://www.flalottery.com/fantasy5.do</guid></item><item game="pick5" winnumm="6-7-9-1-9" midd="Wednesday, August 10, 2016" winnume="4-7-1-9-1" eved="Wednesday, August 10, 2016" myflvm="NA" myflve="NA" name="PICK 5"><title>PICK 5 Drawing Results</title><link>http://www.flalottery.com/pick5.do</link><description>PICK 5 winning numbers are 6-7-9-1-9 for Midday 08/10/2016 and  4-7-1-9-1 for Evening 08/10/2016</description><pubDate>Wed, 10 Aug 2016 22:11:46 EST</pubDate><guid>http://www.flalottery.com/pick5.do</guid></item><item game="pick4" winnumm="3-6-4-7" midd="Wednesday, August 10, 2016" winnume="7-1-1-7" eved="Wednesday, August 10, 2016" myflvm="widget_p4_midd.flv" myflve="widget_p4_eved.flv" name="PICK 4"><title>PICK 4 Drawing Results</title><link>http://www.flalottery.com/pick4.do</link><description>PICK 4 winning numbers are 3-6-4-7 for Midday 08/10/2016 and  7-1-1-7 for Evening 08/10/2016</description><pubDate>Wed, 10 Aug 2016 22:11:46 EST</pubDate><guid>http://www.flalottery.com/pick4.do</guid></item><item game="pick3" winnumm="3-5-0" midd="Wednesday, August 10, 2016" winnume="2-4-8" eved="Wednesday, August 10, 2016" myflvm="widget_c3_midd.flv" myflve="widget_c3_eved.flv" name="PICK 3"><title>PICK 3 Drawing Results</title><link>http://www.flalottery.com/pick3.do</link><description>PICK 3 winning numbers are 3-5-0 for Midday 08/10/2016 and  2-4-8 for Evening 08/10/2016</description><pubDate>Wed, 10 Aug 2016 22:11:46 EST</pubDate><guid>http://www.flalottery.com/pick3.do</guid></item><item game="pick2" winnumm="9-6" midd="Wednesday, August 10, 2016" winnume="7-7" eved="Wednesday, August 10, 2016" myflvm="NA" myflve="NA" name="PICK 2"><title>PICK 2 Drawing Results</title><link>http://www.flalottery.com/pick2.do</link><description>PICK 2 winning numbers are 9-6 for Midday 08/10/2016 and  7-7 for Evening 08/10/2016</description><pubDate>Wed, 10 Aug 2016 22:11:46 EST</pubDate><guid>http://www.flalottery.com/pick2.do</guid></item><item game="megamillions" nextjp="$45 Million" nextdd="Friday, August 12, 2016" winnum="12-19-20-44-66 MM1 X5" windd="Tuesday, August 9, 2016" name="MEGA MILLIONS"><title>MEGA MILLIONS Drawing Results</title><link>http://www.flalottery.com/megaMillions.do</link><description>MEGA MILLIONS winning numbers are 12-19-20-44-66 MM1 X5 for 08/09/2016 and the next estimated Jackpot is $45 Million for 08/12/2016</description><pubDate>Wed, 10 Aug 2016 22:11:46 EST</pubDate><guid>http://www.flalottery.com/megaMillions.do</guid></item><item game="lucky" nextjp="$700,000" nextdd="Friday, August 12, 2016" winnum="1-11-27-39 LB3" windd="Tuesday, August 9, 2016" myflv="widget_lucky.flv" name="LUCKY MONEY"><title>LUCKY MONEY Drawing Results</title><link>http://www.flalottery.com/luckyMoney.do</link><description>LUCKY MONEY winning numbers are 1-11-27-39 LB3 for 08/09/2016 and the next Jackpot is $700,000 for 08/12/2016</description><pubDate>Wed, 10 Aug 2016 22:11:46 EST</pubDate><guid>http://www.flalottery.com/luckyMoney.do</guid></item></channel></rss>';

var xmlDoc = $.parseXML(xml),
  $xml = $(xmlDoc),
  $data = $xml.find("item");
var res = "";
$data.each(function() {
  var str = "<tr>";
  str += "<td>" + ($(this).attr('game')) + "</td>";
  str += "<td>" + ($(this).attr('nextjp')) + "</td>";
  str += "<td>" + ($(this).attr('nextdd')) + "</td>";
  str += "<td>" + ($(this).attr('winnum')) + "</td>";
  str += "<td>" + ($(this).attr('windd')) + "</td>";
  str += "</tr>";
  res += str;
});
$("#output").append(res);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="output" border="1">
  <tr>
    <th>Game</th>
    <th>Next Jackpot</th>
    <th>Next drawing</th>
    <th>Winning Numbers</th>
    <th>Game Played Date</th>
  </tr>
</table>

【讨论】:

  • 谢谢@Iceman,所以我走在了正确的轨道上。这让我很充实。再次感谢,祝您有一个幸福和有利可图的一天。杰里米 C.
  • @JeremyCummings 谢谢。很高兴它有帮助。
猜你喜欢
  • 1970-01-01
  • 2010-10-14
  • 1970-01-01
  • 2013-10-01
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
  • 1970-01-01
相关资源
最近更新 更多