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

How can I crawl values of variable sub-elements using jquery

本文关键字:元素 变量 何使用 jquery 抓取      更新时间:2023-09-26

我正在使用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 对象,但这也不起作用。任何人都可以帮我纠正我的代码的那部分,或者告诉我如何修复它。它不必使用每种方法,任何方法都是受欢迎的。或者提示也会有很大帮助。提前感谢!

也许是这样的?

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