Web-scraping возвращает URI, а не URL изображения. (Javascript Cheerio) - PullRequest
0 голосов
/ 04 апреля 2020

Я использую Cheerio и прошу засканировать URL изображения. Я продолжаю получать URI, когда я хочу получить URL. Что я могу изменить, чтобы исправить это?

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

(async () => {

    const webUrl = 'https://www.redbubble.com/lists/9747201/favorites';

    const response = await request(webUrl)

    const $ = cheerio.load(response);

    let sticker = $('img[class = "styles__image--2CwxX styles__rounded--1lyoH styles__fluid--3dxe-" ]').attr('src');

    console.log(sticker);
})();

Он продолжает возвращаться

"data:image/gif;base64,R0lGODdhFQAXAPAAANba3wAAACwAAAAAFQAXAAACFISPqcvtD6OctNqLs968+w+GolUAADs="

Когда он должен вернуться

https://ih1.redbubble.net/image.479946364.2928/st,medium,507x507-pad,600x600,f8f8f8.u7.jpg

1 Ответ

0 голосов
/ 04 апреля 2020

Это потому, что источник страницы содержит изображения, которые возвращают это значение. Кажется, что они зашифровали значение с выводом base64, а затем расшифровали src после загрузки страницы.

У вас больше шансов очистить содержимое, используя puppeteer который предоставляет API высокого уровня для управления браузером (без заголовка или без него). Вы можете просто подождать, пока браузер завершит sh загрузку страницы, а затем очистить содержимое, которое вы получите sh.

Другой альтернативой является чтение увеличенного JS исходного кода этой страницы. Вы пытаетесь очистить и найти часть, где она выполняет расшифровку.

ОБНОВЛЕНИЕ:

Возможно, вам вообще не понадобится черио или кукловод. После проверки запросов XHR на самой странице я обнаружил, что для получения всех этих изображений и содержимого используется API-интерфейс graphql. Пожалуйста, изучите запрос, чтобы получить нужные вам результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...