如何使用cheerio和axios选择图像url

wfsdck30  于 2022-11-05  发布在  iOS
关注(0)|答案(2)|浏览(136)
const express = require("express");
const cheerio = require("cheerio");
const axios = require("axios");
const cors = require("cors");
const app = express();

async function getSearchResults(searchFor) {
    const url = `https://www.bol.com/be/nl/s/?searchtext=airpods+pro`;
    const respone = await axios.get(url);
    const $=cheerio.load(respone.data);

    // verwreken van het resultaat in een array
    const ul = $('.product-list');
    ul.find('li .product-item__image .h-o-hidden a .skeleton-image').each((i, element) => {
        const $element = $(element);
        const a = $element.find('img').attr('src');
        console.log(a);   
    });
}

I also give the HTML of the website I'm trying to scrape到目前为止,它认识到确实有~20张图片,但它给出了一个未定义的值。

ql3eal8s

ql3eal8s1#

您的问题是此div中的第一个img没有src属性。
下面是工作代码:

const ul = $('.product-list');
ul.find('li .product-item__image .h-o-hidden a .skeleton-image')
  .each((i, element) => {
    const $element = $(element);
    const a = $element.find('img').attr('data-src');
    console.log(a);   
 });

proof of work screenshot

zzlelutf

zzlelutf2#

您将需要引用实际的图像标记,这是下一个级别。
请尝试以下操作:

ul.find('li .product-item__image .h-o-hidden a .skeleton-image').each((i, element) => {
const $element = $(element);
        const a = $element.find('.skeleton-image__container').find('img').attr('src');
    });

或者,如果skeleton-image类下只有一个div:

ul.find('li .product-item__image .h-o-hidden a .skeleton-image').each((i, element) => {
const $element = $(element);
        const a = $element.find('div').find('img').attr('src');
    });

希望这对你有帮助。

相关问题