获取多个元素的文本作为单独的值

时间:2019-01-27 11:49:06

标签: jquery node.js web-scraping web-crawler cheerio

我正在尝试从WEB收集信息,但是如果一页中有2个元素,则信息存储在同一obj行中。如何在不同的行中存储信息? 代码:

if (!error && response.statusCode == 200) {
  var $ = cheerio.load(html);
  $('#ctl00_MainContent_ipcAvaDay_upnlResultOutbound').each((e, el) => {
    var arrival_airport = $(el).find('.rowinfo2 td:nth-child(2)').text();
    var alio = [arrival_airport];

和console.log即时通讯是

[RigaRiga] 

代替

[Riga]
[Riga]

也许有一些想法?

2 个答案:

答案 0 :(得分:2)

当在元素集合上调用text()时,jQuery会将所有值连接到单个字符串中。

如果要创建所有单独值的数组,请使用map()

var arrival_airport = $(el).find('.rowinfo2 td:nth-child(2)').map(function() {
  return $(this).text();
}).get();
console.log(arrival_airport);

答案 1 :(得分:0)

为清楚起见,可以在ES6之前的版本以及ES6 +箭头功能中避免使用.grid > li { color: #fff; } .text.grid > li { color: #000; }

ES6之前的版本(否this):

this

ES6:

var airports = $(el).find('.rowinfo2 td:nth-child(2)').map(function(i, el) {
  return $(el).text();
}).get();

请勿在这些代码块中使用let airports = $(el).find('.rowinfo2 td:nth-child(2)').map((i, el) => $(el).text()).get() ,因为它很怪异并且会引起混乱。