Web Scraping с помощью Javascript? - PullRequest
0 голосов
/ 05 мая 2018

Мне трудно разобраться, как почистить эту веб-страницу , чтобы поместить этот свадебный список в мою страничку. Сначала это не кажется сложным, но когда я вхожу в код, я просто не могу получить никаких результатов.

Я попробовал ygrab.js , что было довольно просто и привело меня куда-то, но я не могу очистить изображения, а выводит только вывод в консоль (не так много документации продолжай).

$(function() {
var $listResult = $('#list-result');
var kado = [];
var data = [
{
    url: 'https://www.kadolog.com/fr/list/liste-de-mariage-laura-julien',
    selector: '.kado-not-full',
    loop: true,
    result: [{
              name: 'photo', 
              find: '.views-field-field-photo',
              grab: {
                by: 'attr',
                value: 'src'
              }
             },
            {
            name: 'title',
            find: '.views-field-title .field-content',
            grab: {
                by: 'text',
                value: ''
            }
        },
        {
            name: 'description',
            find: '.views-field-body .field-content',
            grab: {
                by: 'text',
                value: ''
            }
        },
        {
            name: 'price',
            find: '.price',
            grab: {
                by: 'text',
                value: ''
            }
        },
        {
            name: 'remaining',
            find: '.topinfo',
            grab: {
                by: 'text',
                value: ''
            }
        },
        {
            name: 'link',
            find: '.views-field-nothing .field-content .btn',
            grab: {
                by: 'attr',
                value: 'href'
            }
        },
    ],
  },
];
ygrab(data, function(result){
 console.log(JSON.stringify(result, null, 2)); //photos = undefined
});

Тогда есть Node.js с Request и Cheerio (и я тоже пробовал Crawler), но я понятия не имею, как работает узел.

var request = require("request");

Это дает мне ошибку в консоли, говоря, что требование не определено. Справедливо, я добавил require.js в скрипты на моей странице. Я получил другую ошибку («Uncaught Error: Несоответствующий анонимный модуль define (): ...»).


У меня такой вопрос: существует ли простой способ Javascript (возможно, без использования узла?), Чтобы очистить список свадеб, которые я пытаюсь получить? Или, может быть, учебник, который напоминает то, что я пытаюсь сделать шаг за шагом?

Буду очень признателен за любую помощь или совет.

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Node.js - это отдельное приложение, которое выполняет JavaScript независимо от веб-страницы.

require - это способ импорта пакетов Node, который не определяется браузером, require.js - это библиотека javascript для запроса пакетов, но она не работает так же, как require функция Node.

Чтобы использовать request и cheerio, вам нужно установить Node.js из здесь , затем установить request и cheerio с помощью следующих команд:

  • npm install request --save
  • npm install cheerio --save

Тогда любой код, который вы напишите с Node.js в этом каталоге, будет иметь доступ к модулям.

Вот учебник по очистке веб-страниц в Node.js с помощью cheerio.

0 голосов
/ 05 мая 2018

Я думаю, что ваша единственная проблема - селектор img. Изменить

    {
          name: 'photo', 
          find: '.views-field-field-photo',
          grab: {
            by: 'attr',
            value: 'src'
          }
    },

К этому

   {
          name: 'photo', 
          find: '.views-field-field-photo .field-content img',
          grab: {
            by: 'attr',
            value: 'src'
          }
    },

Я на самом деле не могу проверить это сейчас, но оно должно работать !!

...