在Node.js中废弃HTML列表

时间:2019-07-05 02:51:00

标签: jquery list web-scraping cheerio

我不熟悉Web抓取和jQuery。

我有一个带有帖子列表的HTML页面。我要加载所有关联的日期(类`json: "forklift_id,notempty"` )以及用户给的星数(类date的数量)。

我已经使用cheerio尝试了以下Node.JS脚本,但到目前为止无法加载任何日期。我想它必须处理我无法正确解析但还无法弄清楚的树。

有什么建议吗?

HTML页面

star

Node.JS代码提取

<body>
   <og:iframe src="...">
      <div id="page">
        <div id="container">
            <div id="content" class="clearfix">
               <div id="main2col" class="clearfix">
                  <ul class="parts-list clearfix-parent">
                    <li>
                       <div class="contents-right505">
                          <div class="clearfix">
                             <p class="info">
                                <span class="date">2019/06/18 22:02</span>
                                by&nbsp;<a id="aaaa" href="/userid/123">xxx</a>
                             </p>
                          </div>
                          <span class="value">
                              yyy:
                              <span>
                                  <span class="star"></span>
                                  <span class="star"></span>
                                  <span class="star"></span>
                                  <span class="star"></span>
                                  <span class="star"></span>
                              </span>
                          </span>
                       </div>
                    </li>

1 个答案:

答案 0 :(得分:1)

是的,当您说选择器无法正常工作时,您是正确的。 第一个问题是,我们不知道什么是parts-list。是身份证吗?一类? 因此,假设它是一个ID,这应该对您有用:

const cheerio = require('cheerio');
const fetch = require('node-fetch');

const pageParse = (url) =>
    fetch(url)
        .then(response => response.text())
        .then(html => {
            const $ = cheerio.load(html);
            $('#parts-list .date').each(() => console.log($(this).html()));
            $('#parts-list .value').each(() => console.log($('span .star').length));
        });

Cheerio是jQuery的实现,因此解析html树就像编写CSS选择器。

[编辑] 只是注意到您还没有将从爬虫获得的html加载到cheerio。基本上,这意味着cheerio永远不会有html树。 PS:我用node-fetch写了我的样本,但是我猜测您唯一的问题实际上是选择器。 [/ edit]