我正在编写一个使用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对象,它也不起作用。 任何人都可以帮我纠正我的代码部分,或告诉我如何解决它。它不必使用每种方法,任何方法的工作都是热情的。或者暗示也会有很多帮助。提前谢谢!
答案 0 :(得分:0)
也许是这样的?
return (function () {
var object = {};
$('.attrgroup').children().each(function(i, element){
object["att" + i] = $(element).text().trim();
});
return object;
})();