使用jQuery在HTML中删除子元素?

使用jQuery在HTML中删除子元素?,jquery,node.js,jquery-selectors,screen-scraping,web-scraping,Jquery,Node.js,Jquery Selectors,Screen Scraping,Web Scraping,我目前正在编写一个脚本,从HTML页面中获取一些非常基本的信息。具体来说,我正试图从allmusic.com获取一些关于艺术家的信息。我正在node.js中编写这个脚本,使用jQuery来执行实际的抓取,并通过使用中的示例使其在一定程度上工作 我想做的是搜索一位受欢迎的艺术家,然后存储第一个结果的一些基本信息,这几乎完全是我要寻找的艺术家。我能够使用下面的代码提取有问题的表,但我不知道如何从HTML中获取前两个td元素,这是我真正需要做的。我的node.js代码如下: var request =

我目前正在编写一个脚本,从HTML页面中获取一些非常基本的信息。具体来说,我正试图从allmusic.com获取一些关于艺术家的信息。我正在node.js中编写这个脚本,使用jQuery来执行实际的抓取,并通过使用中的示例使其在一定程度上工作

我想做的是搜索一位受欢迎的艺术家,然后存储第一个结果的一些基本信息,这几乎完全是我要寻找的艺术家。我能够使用下面的代码提取有问题的表,但我不知道如何从HTML中获取前两个
td
元素,这是我真正需要做的。我的node.js代码如下:

var request = require('request'),
    jsdom = require('jsdom');

request({ uri:'http://allmusic.com/search/artist/lady+gaga' }, function (error, response, body) {

  jsdom.env({
    html: body,
    scripts: [
      'http://code.jquery.com/jquery-1.5.min.js'
    ]
  }, function (err, window) {
    var $ = window.jQuery;

    // jQuery is now loaded on the jsdom window created from 'agent.body'
    var search = $('.search-results').html();
    if(search != null){
      //gah what can i do here?!?
    }
  });
});
下面是有问题的HTML块,您无需亲自查找:

<table class="search-results" border="0" cellpadding="0" cellspacing="0" width="100%">
   <tr>
      <th class="relevance">
          <a href="http://www.allmusic.com/search/artist/lady gaga/filter:all/exact:0/order:relevance-asc" title="order by relevance">Relevance</a>
      </th>
      <th width="10px">&nbsp;</th>

      <th>
         <a href="http://www.allmusic.com/search/artist/lady gaga/filter:all/exact:0/order:name-asc" title="order by name">Name</a>
      </th>
      <th width="75px">
          <a href="http://www.allmusic.com/search/artist/lady gaga/filter:all/exact:0/order:genre-asc" title="order by genre">Genre</a>
       </th>
       <th width="200px">Years Active</th>

    </tr>

           ACTUAL RELEVANT STUFF THAT I WANT ARE BELOW

    <tr>
       <td class="relevance text-center">
           <div class="bar" style="width:100%" title="100%"></div>
       </td>
       <td class="text-center"></td>
       <td><a href="http://www.allmusic.com/artist/lady-gaga-p1055684">Lady Gaga</a></td>

        <td>Pop/Rock</td>   //SPECIFICALLY THIS
        <td>00s</td>
    </tr>

活跃年份
我想要的实际相关资料如下
流行乐/摇滚乐//尤其是这个
00秒
此表中还有很多条目,但这是第一个结果。是否有可能创建一个td数组或类似的数组,然后只获取正确的索引?假设我总是得到第一个结果,那么每个艺术家的指数应该是相同的

如果这是不可能的,有没有其他方法来实现我的目标?或者,有没有更好的方法来完成我在node.js中尝试的工作?我看了很多不同的选择,这似乎是最简单的

非常感谢,
Sami

您可以使用.sibles()方法遍历td元素

见: 您还可以使用JQuery获取所有td元素,这些元素将返回一个数组并使用您提到的索引

选择器应如下所示:

var tds= $('.search-results tr td');
这将得到表中的所有tds,因此必须乘以列数

var trs = $('.search-results tr');
请记住,第一列包含标题,而这些标题不在tds变量中


希望这能有所帮助。

Hi theprogrammer(或其他任何人)-所以当我做类似
var-tds=$('.search results tr-td')
,我总能看到与此匹配的第一个元素(
),但我不知道如何访问此后的任何
td
。。。我尝试过使用数组表示法,并在jQueryAPI中找到了一些函数(即将调用链接到
children()
sides()
),但我似乎什么都做不到。。。我假设我遗漏了一些明显的东西……好吧,我已经知道如何使用
每个
函数来实现这一点。然而,理想情况下,我只想选择一个我想跳转到的索引,而不需要遍历之前的所有索引。有人能告诉我怎么做吗?tds[0]将在该位置返回html对象。您应该能够执行$(tds[2]).text();例如,获取文本内容。