Я пытаюсь использовать Cheerio для извлечения элемента div из html с использованием Phantom в NodeJS - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь извлечь только элементы внутри имен классов pod pod--rounded.
Элементы, которые я хочу, находятся в разделе «Мои списки» на этом сайте

Пакет Phantom NPM можно найти здесь .

var phantom = require("phantom");
const cheerio = require('cheerio')

var _ph, _page, _outObj;

phantom.create().then(function(ph){
    _ph = ph;
    return _ph.createPage();
}).then(function(page){
    _page = page;
    return _page.open('https://www.bhgre.com/Better-Homes-and-Gardens-Real-Estate-Big-Hill-5569c/Suzan-Jackson-300497a');
}).then(function(status){
    console.log(status);
    return _page.property('content')
}).then(function(content){
  const $ = cheerio.load(content)
    console.log($('div, pod pod--rounded'));
    _page.close();
    _ph.exit();
}).catch(function(e){
  console.log(e); 
});

Весь html возвращается, если консольный журнал просто content. Я думаю, у меня проблемы с пониманием логики c Cheerio. Когда я пытаюсь использовать Cheerio для разбора вещей, я получаю нечто, отчасти похожее на это ...

  'x-attribsPrefix': [Object: null prototype] {},
  children: [ [Object], [Object], [Object] ],
  parent:
   { type: 'tag',
     name: 'td',
     namespace: 'http://www.w3.org/1999/xhtml',
     attribs: [Object],
     'x-attribsNamespace': [Object],
     'x-attribsPrefix': [Object],
     children: [Array],
     parent: [Object],
     prev: null,  
     ...  

Что это за объект? Это JSON?

Если в вашем браузере вы должны были go на сайт , «проверить» элемент «Мои списки», щелкните правой кнопкой мыши на div pod pod--rounded и скопируйте Элемент у вас будет именно то, что я хочу, чтобы Node извлекал со страницы. Просто все html внутри этого деления.

1 Ответ

1 голос
/ 11 апреля 2020

Я думаю, ваш селектор должен измениться с div, pod pod--rounded на div.pod.pod--rounded. и согласно документам cheerio :

коллекции Cheerio состоят из объектов, которые имеют некоторое сходство с основанными на браузере узлами DOM.

...