如何使用jquery爬取变量子元素的值

时间:2014-12-18 01:46:23

标签: javascript jquery html node.js

我正在编写一个使用node.js进行研究的爬虫,并抓取数据以备将来使用。我知道如何抓取页面中的单个元素,但在一整天的研究之后,我无法弄清楚如何获取变量子元素的值。

以下是我要抓取的HTML部分。 “attrgroup”的每个子元素都有不同的

<p class="attrgroup">
<span><b>4</b>BR / <b>1</b>Ba</span>
<span><b>1200</b>ft<sup>2</sup></span>
<span>duplex</span> 
<span>laundry on site</span> 
<span>street parking</span>
<br><span>cats are OK - purrr</span></p>

这是我的代码

            topics = topics.map(function (topicPair) {

                var topicUrl = topicPair[0];
                var topicHtml = topicPair[1];
                var $ = cheerio.load(topicHtml);
                return ({
//[1]I got correct value,such as duplex, using following clauses.
                  att1: $('.attrgroup').children().eq(0).text().trim(),
                  att2: $('.attrgroup').children().eq(1).text().trim(),
                  att3: $('.attrgroup').children().eq(2).text().trim(),
//[2]I want all of them,but.each function doesn't return the correct data
                  atts: $('.attrgroup').children().each(function(){
                    $(this).text()
                  }),
                });
            });

我得到了这样的结果:

att1: '4BR / 1Ba',
att2: '1200ft2',
att3: 'duplex'
atts:  { '0': [Object],
       '1': [Object],
       '2': [Object],
       '3': [Object],
       '4': [Object],
       '5': [Object],
       options: [Object],
       _root: [Object],
       length: 7,
       prevObject: [Object] },

目前,我知道原因可能是$(this),一个jquery对象。我试图将它转换为DOM对象,它也不起作用。 任何人都可以帮我纠正我的代码部分,或告诉我如何解决它。它不必使用每种方法,任何方法的工作都是热情的。或者暗示也会有很多帮助。提前谢谢!

1 个答案:

答案 0 :(得分:0)

也许是这样的?

return (function () {

    var object = {};

    $('.attrgroup').children().each(function(i, element){
        object["att" + i] = $(element).text().trim();
    });

    return object;

})();