尝试使用jQuery / javascript从Wikipedia中清除元素列表

时间:2011-06-04 17:04:09

标签: javascript jquery html wikipedia

所以我试图从这样的页面中获取以下音乐类型列表:

http://en.wikipedia.org/wiki/List_of_styles_of_music:_A-F

根据我使用Chrome的“检查元素”,我需要访问<ul>元素'<li>元素'标题元素。然后,我需要访问这些变量,以便我可以将它们输入到数据库中(但我可以这样做)。

那么如何获得所有ul - &gt; li - &gt;标题元素?我甚至不确定如何连接到那个wikipedia.org网页,所以我可以开始擦洗。我对jQuery比较陌生,但到目前为止真的很享受它的强大功能!

谢谢你们。

2 个答案:

答案 0 :(得分:0)

您可以使用一些XPath来提供帮助:

var snapshot = document.evaluate('//ul/li/a[1]/@title', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);

这将创建文档中与XPath查询匹配的所有节点的快照。上面的XPath查询第一个链接元素的title属性,该属性是<li>的子节点<ul>的子节点。

获得快照后,您可以遍历它并获取名称:

for (var i = 0; i < snapshot.snapshotLength; i ++) console.log(snapshot.snapshotItem(i).nodeValue);

(您可以在chrome的Web检查器控制台中运行上面的代码。)


您也可以在PHP中执行相同的操作,只需在DOMDocument中加载文档:

$doc = new DOMDocument;
$doc->loadHTML(file_get_contents('http://en.wikipedia.org/wiki/List_of_styles_of_music:_A-F'));

并使用XPath进行查询:

$xp = new DOMXPath($doc);
foreach ($xp->query('//ul/li/a[1]/@title') as $node) {
    echo "$node->nodeValue\n";
}

答案 1 :(得分:0)

$.ajax({
  url: "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FList_of_styles_of_music%3A_A-F%22%20and%0A%20%20%20%20%20%20xpath%3D'%2F%2Fdiv%5B%40id%3D%22bodyContent%22%5D%2Ful%2Fli%2Fa'&format=json&diagnostics=true",
  success: function(e){
      $.each(e.query.results.a,function(i,c){
          $('ul').append($('<li />').text(c.title));
      });

  }
});

示例:http://jsfiddle.net/niklasvh/DW2p3/