Соскоб с помощью Apify - PullRequest
       86

Соскоб с помощью Apify

1 голос
/ 25 февраля 2020

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

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

enter image description here

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

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

enter image description here

Функция страницы
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;
} 

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 01 марта 2020

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

0 голосов
/ 25 февраля 2020

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

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

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

...