DOM 页面中的网页抓取 Node.js

Web Scraping Node.js in DOM page

我想使用 Node.js 从 site 获取信息 我这么努力,and̶g̶o̶t̶̶s̶o̶̶f̶a̶r̶。所以,我想得到一个磁铁 URI link,这个 link 在:

<div id="download"> 
<a href=magnet:?xt=urn:btih:335fc3d9d870109a8dd0e87765a9210754dd8fac&amp;dn=rutor.org_%D0%90%D1%84%D0%B5%D1%80%D0%B0+%D0%BF%D0%BE-%D0%B0%D0%BD%D0%B3%D0%BB%D0%B8%D0%B9%D1%81%D0%BA%D0%B8+%2F+Trespass+Against+Us+%282016%29+HDRip+%D0%BE%D1%82+MegaPeer+%7C+P&amp;tr=udp://opentor.org:2710&amp;tr=udp://opentor.org:2710&amp;tr=retracker.local/announce"><img src="/parse/s.rutor.org/i/magnet.gif"></a>

如何使用 cheerio 从 div 和 href 字段中获取此 link。我不会jQuery,我只想写一个解析器。

这是我的尝试:

const request = require('request');
const cheerio = require('cheerio');

request('http://s.new-rutor.org/torrent/562496/povorot-ne-tuda-5-krovnoe-rodstvo_wrong-turn-5-bloodlines-2012-bdrip-avc-p/', function(err, resp, body) {
        if (!err){
          const $ = cheerio.load(body);
           var magnet = $('.href', '#downloads').text()
         // $('#downloads').find('href').text()

          console.log(magnet); 
      }
});

该代码仅在控制台中出现空位

注意:我使用的是 request-promise 而不是请求

此代码 console.logs 所有 a-tags 的 href 包含 'magnet'

const request = require('request-promise');
const cheerio = require('cheerio');

request('http://s.new-rutor.org/torrent/562496/povorot-ne-tuda-5-krovnoe-rodstvo_wrong-turn-5-bloodlines-2012-bdrip-avc-p/').then(res => {
  const $ = cheerio.load(res)
  const links = $('a')
  links.each(i => {
    const link = links.eq(i).attr('href')
    if (link && link.includes('magnet')) {
      console.log(link)
    }
  })
})

eq 从该索引

中选择一个特定的 link
links.each(i => links.eq(i))

然后我们用

抓取属性href(磁铁link)里面的内容
links.eq(i).attr('href')