我不熟悉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 <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>
答案 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]