Я использую Apify , службу браузера без заголовка для написания веб-скрапинга сканеров , которые являются Javascript.
Я пытаюсь собрать контент для сотен статей, которые я опубликовал в блоге.
Сканер работает по , указывая , в веб-интерфейсе Apify, стартовую страницу и страницу списка, которые представляют собой разбитые на страницы индексы, содержащие ссылки на статьи, а также шаблон URL для целевых статей, которые он должен сканировать оттуда. ...
В моем выборе имен ...
Вот код сканера ...
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 Я не до конца понимаю проблему.