Веб-парсинг с использованием Apify

Я пытаюсь очистить URL-адреса от https://en.wikipedia.org/wiki/List_of_hedge_funds

В частности, я пытаюсь использовать Apify для очистки этой страницы и возврата списка URL-адресов из тегов привязки, присутствующих в HTML. В моей консоли я ожидаю увидеть значение атрибута href одного или нескольких тегов привязки, которые существуют на целевой странице, в свойстве с именем myValue. Я также ожидаю увидеть заголовок страницы в свойстве title. Вместо этого я просто вижу следующее свойство URL и его значение.

введите здесь описание изображения

Актер My Apify использует платформу Puppeteer. Поэтому я использую pageFunction аналогично тому, как Puppeteer использует это.

Ниже приведен снимок экрана пользовательского интерфейса Apify непосредственно перед его запуском.

введите здесь описание изображения

Page function
function pageFunction( context ) {
    // called on every page the crawler visits, use it to extract data from it
    var $ = context.jQuery;
    var result = {
        title: $('.wikitable').text,
        myValue: $('a[href]').text,
    };
    return result;
} 

Что я делаю неправильно?


person NoUsername9    schedule 25.02.2020    source источник
comment
Вы пробовали это? apify / веб-скребок   -  person Let Me Tink About It    schedule 25.02.2020


Ответы (2)


У вас есть опечатка в вашем коде, text - это функция, поэтому вам нужно добавить круглые скобки:

var result = {
    title: $('.wikitable').text(),
    myValue: $('a[href]').text(),
};

Но учтите, что это, вероятно, все равно не сделает то, что вы ожидаете - он вернет текст всех совпадающих элементов. Вероятно, вам потребуется использовать функцию jQuery's each() (https://api.jquery.com/jquery.each/), чтобы перебрать найденные элементы, передать некоторые значения из них в массив и вернуть массив из функции вашей страницы.

person Jan Curn    schedule 25.02.2020

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

person NoUsername9    schedule 01.03.2020