Ошибка при вызове пользовательской функции pageFunction: Ошибка: Ошибка типа: JSON.stringify не может сериализовать циклические структуры
Я использую Apify, безголовый браузерный сервис для написания веб- сканеров, которые являются Javascript.
Я пытаюсь собрать содержание статьи для сотен статей, которые я опубликовал в блоге.
Сканер работает, определяя в веб-интерфейсе Apify стартовую страницу и страницу списка, которые представляют собой разбитые на страницы индексы, содержащие ссылки на статьи, а также шаблон URL для целевых статей, которые он должен сканировать оттуда...
В моем выборе имен...
- НАЧАТЬ: https://www.example.com/author/myname
- СПИСОК: https://www.example.com/author/myname/page/[ \ d +]
- ДЕТАЛИ: https://www.example.com/[ \ d +] / [\ d +] /[a-z0-9]+(?:-[a-z0-9]+)*.html$
Вот код сканера...
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, я не до конца понимаю проблему.