[我正在尝试使用Cheerio在NodeJS中使用Phantom从html提取div元素

问题描述 投票:0回答:1

我试图仅提取类名pod pod--rounded中的元素。我想要的元素在this site]上的“我的列表”部分中

可以在here中找到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); 
});

如果控制台日志仅为content,则返回整个html。我认为我在理解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吗?

[如果在浏览器中,您要转到site,“检查”“我的清单”元素,请右键单击div pod pod--rounded,然后复制元素,您将拥有我想要Node从页面中提取的内容。只是该div内的所有html。

我试图仅提取类名称pod pod中的元素-四舍五入。我想要的元素在此站点上的“我的列表”部分中。可以在此处找到Phantom NPM软件包。 var ...

node.js web-scraping cheerio
1个回答
1
投票

我认为您的选择器应从div, pod pod--rounded更改为div.pod.pod--rounded。并根据cheerio's documents

© www.soinside.com 2019 - 2024. All rights reserved.