Форматирование данных в Cheerio - PullRequest
0 голосов
/ 02 ноября 2019

Я хочу получить список IP-адресов с веб-сайта и добавить их в массив. На веб-сайте отображаются такие данные:

<tbody><tr role="row" class="odd">
<td>131.108.216.44</td>
<td>47267</td>
<td>BR</td>
<td class="hm">Brazil</td>
<td>elite proxy</td>
<td class="hm">no</td>
<td class="hx">yes</td>
<td class="hm">2 minutes ago</td>
</tr>
<tr role="row" class="even">
<td>85.173.165.36</td>
<td>46330</td>
<td>RU</td>
<td class="hm">Russian Federation</td>
<td>elite proxy</td>
<td class="hm">no</td>
<td class="hx">yes</td>
<td class="hm">2 minutes ago</td>
</tr>
</tbody>

На самом деле это очень длинный список из 100 таблиц, но формат тот же.

То, что я сделал:

var c = new Crawler({
maxConnections: 1,
callback: function (error, res, done) {
    if (error) {
        console.log(error)
    } else {
        var $ = res.$;
        $('tbody>tr>td').each((i, el) => {
            const item = $(el)
            console.log(item.text());

        })


    }
    done();
}
})

c.queue({
uri: 'https://free-proxy-list.net/'
})

Я хочу сохранить первые 10 IP-адресов с веб-сайта и добавить их в массив.

1 Ответ

1 голос
/ 03 ноября 2019

Первые 10 будут выглядеть так:

let proxies = $('tr[role=row]').map((i, tr) => {
  let host = $(tr).find('td:nth-child(1)').text()
  let port = $(tr).find('td:nth-child(2)').text()
  return `${host}:${port}`
}).get().slice(0, 10)
...