【问题标题】:Formatting data in with Cheerio使用 Cheerio 格式化数据
【发布时间】:2019-11-02 12:12:29
【问题描述】:

我想从网站获取 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,并将它们添加到数组中。

【问题讨论】:

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


    【解决方案1】:

    前 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)
    

    【讨论】:

      猜你喜欢
      • 2015-08-27
      • 2011-10-24
      • 1970-01-01
      • 2021-04-29
      • 2021-08-07
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多