图片抓取器空网址

时间:2020-09-19 01:58:01

标签: javascript node.js

urls返回一个空数组[]

我不太了解这部分代码,因为它是借来的,

我需要帮助了解url部分才能正确地对其进行重新编码,

或者让某人为我重新编码,我会尽力理解。

网址部分是为Google图片制作的,而我使用的是其他网站。

我正在抓取该站点的图像:https://www.desktopnexus.com/search/kitsune+girl/1/

function kitsuneimage(message) {
  var options = {
    url: "https://www.desktopnexus.com/search/" + "kitsune+girl" + "/" + Math.ceil(Math.random() * (60 + 2)) +"/",
    method: "GET",
    headers: {
      "Accept": "text/html",
      "User-Agent": "Chrome"
    }
  }
  console.log(options.url);

  request(options, function(error, response, responseBody) {
    if (error) {
      return;
    }

    $ = cheerio.load(responseBody);

    var links = $(".image a.link");

    var urls = new Array(links.length).fill(0).map((v, i) => links.eq(i).attr("href"));

    console.log(urls);
    if (!urls.length) {
      return;
    };
    message.channel.send(urls[0]);
  });
}

3 个答案:

答案 0 :(得分:0)

代替

var links = $(".image a.link")

也许这应该起作用:

var thumbnails = $("#middlecolumn .thumbnail")

// this is a jquery object, so we need to call get() to turn it into a plain array
var links = thumbnails.map(thumbnail => thumbnail.parent()).get()

var urls = links.map(link => link.getAttribute('href'))

答案 1 :(得分:0)

缩略图部分确实可以抓取图像,并且在console.log(thumbnails);中看起来像这样

  '2': {
    type: 'tag',
    name: 'img',
    namespace: 'http://www.w3.org/1999/xhtml',
    attribs: [Object: null prototype] {
      src: '//cache.desktopnexus.com/thumbseg/1853/1853748-200.jpg',
      border: '1',
      alt: 'girl',
      class: 'thumbnail'
    },

但是它说在.parent中是未定义的 我在想也许用标签替换缩略图,因为那是类型,行得通吗?

----编辑---- 嗯,那是错误的,因为缩略图是其中图像的类别。

那么.parent为什么未定义?

答案 2 :(得分:0)

自从我着手使用“ got”模块制作新代码以来,这个问题就关闭了。