- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图从这个 html 中抓取 Jung Ho Kang
和 5
并将其放入一个对象中。我想排除 (R)
和 SS
中的所有内容。
<td id="lineup-table-top">
<b class="text-muted pad-left-10">5</b>
Jung Ho Kang
<small class="text-muted">(R)</small>
<small class="text-muted">SS</small>
</td>
这是我的代码:
var someObjArr = [];
$('td#lineup-table-top').each(function(i, element){
//Get the text from cheerio.
var text = $(this).text();
//if undefined, create the object inside of our array.
if(someObjArr[i] == undefined){
someObjArr[i] = {};
};
//Update the salary property of our object with the text value.
someObjArr[i].name = text;
$('b.pad-left-10').each(function(i, element){
//Get the text from cheerio.
var text = $(this).text();
//if undefined, create the object inside of our array.
if(someObjArr[i] == undefined){
someObjArr[i] = {};
};
//Update the name property of our object with the text value.
someObjArr[i].batting = text;
});
});
代码的确切输出如下:
{ batting: '5',
name: '5 Jung Ho Kang (R) SS 3B' }
{ name: '5 Jung Ho Kang (R) SS' },
预期输出:
{ batting: '5',
name: 'Jung Ho Kang' }
我不知道为什么它似乎循环了两次,而且我无法弄清楚如何在没有与之关联的类/ID 的情况下仅隔离名称。
任何方向都受到热烈的赞赏。
最佳答案
看起来您只想抓取标记中的文本 Node 。
https://github.com/cheeriojs/cheerio/issues/359
我不确定 nodeType
是否受支持,但您应该先尝试使用它。 ( nodeType docs )
$('td#lineup-table-top').contents().each(function(i, element){
someObjArr[i] = someObjArr[i] || {};
// The first element in #linup-table-top is batting stats
if ( i === 0 && $(element).hasClass('pad-left-10') ) {
someObjArr[i].name = $(element).text().trim();
}
// The raw text inside of #lineup-table-top the player name
if ( element.nodeType === 3 ) {
someObjArr[i].name = $(element).toString().trim();
}
});
如果不支持,您可以退回到使用element.type
if ( element.type === 'text' ) {
someObjArr[i] = someObjArr[i] || {};
someObjArr[i].name = $(element).toString().trim();
}
我过去使用它来仅抓取整个标记页面中的文本。
// For each DOM element in the page
$('*').each(function(i, element) {
// Scrape only the text nodes
$(element).contents().each(function(i, element) {
if (element.type === 'text') {
}
});
});
关于javascript - 用 cheerio 抓取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31949521/
我有一个 cheerio 对象: const $ = cheerio.load('') 这是一个简单的例子,但要复杂得多。 我需要克隆它,这样我就可以在不影响它的情况下用它做不同的事情。 这是我目前所
在 Cheerio 中,如何仅获取当前节点的文本? var cheerio = require('cheerio') const htmlString = 'helloworld' $ = cheer
我有这段代码: const response = await request.get( `https://www.youtube.com/watch?v=yURRmWtbTbo&sp=EgI
我是 JavaScript 的新手,我很确定我错过了从 HTML 页面(由 Web 浏览器浏览)使用 JS 的一些基本知识。 我的目标是从 a dynamic website 中删除照片链接使用 ch
我发布了我的问题希望有人能帮助我,我尝试抓取所有具有机器人属性的链接使用cheerio,我向一个url发出请求,它以字符串形式检索一个html页面。 test
我正在解析一个网站,并且有多个看起来像这样的表。 Saturday 每个表的表类名称都是唯一的。 我想为这个特定表中的每一行提取 Linking 的跨度类,但我正在努力选择要使
如果我有以下 html 代码: Random stuff blabla 如何使用cheerio提取title和href的所有值?我尝试了以下操作,但它只会提取 hello 和 fb.com 并跳过其余
我正在使用cheerio 来修改我从网站上抓取的HTML。然而,它搞乱了配额。 这个脚本工作正常,唯一的问题是,它正在将 ' 更改为 " // Load in HTML $
https://www.cbf.com.br/futebol-brasileiro/competicoes/campeonato-brasileiro-serie-a/2018/1?ref=botao
我有以下代码: var cheerio = require('cheerio'); var html = " Header 1 Header 2 Header 3"; var $ = cheerio.
嘿,伙计们,女士们,首先这是我在 stackoverflow 中的第一个问题,所以不要对我太苛刻......但是 w/e :P。我有个问题..我对网络抓取完全陌生,目前我遇到无法选择正确元素的问题。我
我有一个 html 看起来像: 132 Purple Grove Albany, Texas 76801 Phone: (111) 111-
我有一个代码,可以对特定页面进行网络废弃。我使用 puppeteer+cheerio 来做到这一点。在我的笔记本电脑上代码完美运行。但是在将它部署到 VDS 之后,cheerio each() 选择器
如何获取选择器的 css 属性? 有html 和 my_class 的一些属性 .my_class { color: red } 在 JS 代码中,我使用的是 cheerio 库: va
我正在尝试检查 2 个 html 表格的元素: head1 value1
我有一个类似这样的 html 页面,其中包含 2 个产品和基于条件的不同版本,在本例中 1 个产品有 4 个条件
在 Cheerio/Jquery documentation据说, return false 应该尽早中断每个循环。 我有以下代码: "use strict"; let cheerio = requi
我有一些这样的 HTML: Code: 12345 Category: faucets 我想获取类别名称(“水龙头”)。这是我的试用版: var $ = cheerio.load(html.conte
我是 JavaScript 的新手,我很确定我错过了从 HTML 页面(由 Web 浏览器浏览)使用 JS 的一些基本知识。 我的目标是从 a dynamic website 中删除照片链接使用 ch
大家晚上好 我研究了 cheerio 并尝试解析来自网站的数据。它的结构如下,我直接上正文: Text A Sub-Text A some text Sub-Text B some t
我是一名优秀的程序员,十分优秀!