如何使用node.js Cheerio逐个获取元素

时间:2015-12-30 15:27:48

标签: javascript node.js cheerio

我使用Cheerio制作网络剪贴簿,请求Node.js.我使用了一些刮刀,但我不知道jQuery熟悉的刮刀,Cheerio。无论如何,让我们看看问题。

HTML

<li><a title="FR" class="A">176.31.239.33:8133</a></li>
<li><a title="FR" class="B">87.98.218.86:3128</a></li>
<li><a title="CN" class="A">183.62.60.100:80</a></li>
<li><a title="CN" class="A">183.131.152.227:80</a></li>
<li><a title="CN" class="A">183.238.133.43:80</a></li>

我想要获取具有class =&#34; A&#34;,然后是其文本(183.62.60.100:80)的元素。然后将制作数组。

[ 
{ 'title' : 'FR', 'IP' : '176.31.239.33:8133' }, 
{ 'title' : 'CN', 'IP' : '183.62.60.100:80' },
...
]
但是我被困了。我试过......

var $ = cheerio.load(html);
var arr = $('a[class=A]').text();
console.log(arr) 

// result is 
// 176.31.239.33:8133183.62.60.100:80183.131.152.227.80

// if I print console.log(arr[0]), the result is just 1

reuslt不是一个阵列,所以我不能一个接一个地拿起它。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

您应该遍历GG选择器返回的集合,并将每个元素的jquery/cherrio属性与其内部文本一起获取。试试:

title

您还可以尝试将var $ = cheerio.load(html); var arr = $('a[class=A]'); var array = []; arr.each(function() { array.push({ title: $(this).attr('title'), IP: $(this).text() }); }); 表达式替换为$('a[class=A]')。它看起来更干净。