Ошибка вызова предоставленной пользователем функции pageFunction: Ошибка: Ошибка типа: JSON.stringify не может сериализовать циклические структуры - PullRequest
0 голосов
/ 29 июня 2018

Я использую Apify , службу браузера без заголовка для написания веб-скрапинга сканеров , которые являются Javascript.

Я пытаюсь собрать контент для сотен статей, которые я опубликовал в блоге.

Сканер работает по , указывая , в веб-интерфейсе Apify, стартовую страницу и страницу списка, которые представляют собой разбитые на страницы индексы, содержащие ссылки на статьи, а также шаблон URL для целевых статей, которые он должен сканировать оттуда. ...

enter image description here

В моем выборе имен ...

Вот код сканера ...

function pageFunction(context) {

    // Called on every page the crawler visits, use it to extract data from it
    var $ = context.jQuery;

    // If page is START or a LIST,
    if (context.request.label === 'START' || context.request.label === 'LIST') {

        context.skipOutput();

        // First, gather LIST page
        $('a.page-numbers').each(function() {
            context.enqueuePage({
                url: /*window.location.origin +*/ $(this).attr('href'),
                label: 'LIST'
            });
        });

        // Then, gather every DETAIL page
        $('h3>a').each(function(){
            context.enqueuePage({
                url: /*window.location.origin +*/ $(this).attr('href'),
                label: 'DETAIL'
            });
        });

    // If page is actually a DETAIL target page
    } else if (context.request.label === 'DETAIL') {

        result = {
            "title": $('h1')
        };

    }
    return result;
}

Я думаю, эта конструкция может быть несколько правильной.

Из START и LIST это правильно определяет правильные URL для сканирования, это не проблема. Поведение Apify заключается в том, что pageFunction запускается для каждой страницы, для которой необходимо извлечь данные. Я тестирую, стремясь извлечь только тег H1 каждой страницы.

Проблема заключается в том, что для каждого из них (т. Е. Когда pageFunction выполняется) вместо возврата тега H1 сканер возвращает ...

Error invoking user-provided 'pageFunction': Error: TypeError: JSON.stringify cannot serialize cyclic structures.

Я прочитал о JSON.stringify Я не до конца понимаю проблему.

...