cheerio 相关问题

专为服务器设计的核心jQuery的快速,灵活和精益实现。 https://github.com/cheeriojs/cheerio

如何从任何给定的跨度之间提取文本?

我正在尝试使用Cheerio和node.js从有趣的html中提取文本。 llet说我有以下html: <p> <span class="sectionno" id="s1">1</span> Do you see that shelf? <span class="endsection"></span> <span class="sectionno" id="s2">2</span>The shelf is hanging </p> <p>on the wall</p> <p>beside the clock.</p> <h3>Title Here</h3> <span class="endsection"></span> <p> <span class="sectionno" id="s3">3</span>The clock </p> <p>was ticking slowly</p> <p>telling time<span class="endsection"></span></p> 我希望能够提取以下数据,获得文本betew之间。 span.sectionno 我想忽略标题中的任何文本的情况。 span.endsection 由于HTML的奇怪设置,我无法成功地使用Cheerio进行此操作。任何帮助都将受到赞赏! 任何好的方法都应该分为两部分;由一个函数实现,该函数提取了两个元素节点,每个元素节点都定义了文本包含的开始点或终止点,并伴随着第二个函数,该功能提取了每个范围的文本值。 是第一个,通过通过选择器匹配两个范围标记(例如......)来利用[ { no: 1, text: "Do you see that shelf?", }, { no: 2, text: "The shelf is hanging on the wall, beside the clock.", }, { no: 3, text: "The clock was ticking slowly telling time", }, ] const $ = cheerio.load(html); const sections = []; $("span.sectionno").each((_, el) => { const sectionNo = parseInt($(el).text()); const text = $(el).nextUntil("span.endsection").addBack().text(); sections.push({ no: sectionNo, text: text.trim() }); }); console.log(sections); // [ { no: 1, text: '1' }, { no: 2, text: '2' }, { no: 3, text: '3' } ] ...已经解决了问题,但是,它不能保证(故意或意外)嵌套范围标记的故障安全。 最好通过额外的(例如基于基于的任务,在其中尝试对错误的嵌套范围标记(忽略破碎的标记)进行消毒。 LET的假设称为querySelectorAll,必须将元素节点传递给它,以将有效范围提取为一个元组。 因此,如果只有标记可以与之合作,则首先必须从中解析文件,例如... querySelectorAll('.sectionno, .endsection') 第二个功能可能称为reduce。它负责在开始和终止标记元素之间收集和返回整个文本内容。因此,后两个是该函数所期望的唯一两个参数。 通过简单的树木走动来完成文本内容,其中一个从启动标记元素开始,将要返回的文本项目对象提取的项目计数(getSectionRanges)。通过使用当前处理的节点的const docBody = new DOMParser() .parseFromString(markup, 'text/html') .body; const sectionRangeList = getSectionRanges(docBody); (文本节点或元素节点)来汇总此项目的propert-proper-allue。如果既没有下一个兄弟姐妹,也没有与终止标记元素的匹配,则必须切换到最后一个节点的父元素的下一个兄弟姐妹。多数民众赞成在成功的树走路所需的一切。 ...示例代码... extractSectionTextContent no text

回答 1 投票 0

Cheerio / svelte 5:渲染不是一个函数

我正在对一个不是我编写的包运行cheerio(1.0.0)测试,所以我对它的了解并不完整,并且(显然)我想做最少的事情来让它工作。 我已经升级了包...

回答 1 投票 0

pinterest 网络抓取图像

我正在尝试从 pinterest 图像中获取 url,并通过 pinterest 上用户的一般配置文件发送它的 url,但它返回给我未定义 我的代码: const 命令 = require("../../

回答 2 投票 0

无法使用cheerio读取未定义的Nodejs属性(读取'statusCode')

我试图获取这个有趣的请求的网页标题,cheerio 面临这个问题无法读取未定义的属性(读取“statusCode”),但是当我尝试运行 sepa 时...

回答 2 投票 0

使用 Cheerio 的字数统计不正确

我正在尝试在以下 Gulp 任务中使用 Cheerio 计算 HTML 页面的字数: gulp.task("html", () => { 尝试 { return gulp.src(folder.src + "html/**/*.

回答 1 投票 0

在 Gulp 任务中使用 Cheerio 的字数统计不正确

我正在尝试在以下 Gulp 任务中使用 Cheerio 计算 HTML 页面的字数: gulp.task("html", () => { 尝试 { return gulp.src(folder.src + "html/**/*.

回答 1 投票 0

使用 Cheerio 展开多个嵌套 HTML 元素

给定一个包含多个嵌套元素的 HTML 字符串,如何使用 Cheerio 删除所有字体元素,同时保留最里面的字体元素的内部内容? 例如,这是 b...

回答 1 投票 0

使用 Cheerio 取消多个嵌套 HTML 元素

给定一个包含多个嵌套元素的 HTML 字符串,如何使用 Cheerio 删除所有字体元素,同时保留最里面的字体元素的内部内容? 例如,这是 b...

回答 1 投票 0

Express Router API 中带有 Cheerio 的 Puppeteer-cluster 返回空响应

我正在使用express、puppeteer-cluster和cheerio编写一个API,它返回包含一个或多个可以作为查询参数添加的单词的所有锚元素。我想按顺序使用 puppeteer ...

回答 1 投票 0

抓取具有动态内容的网页 - Cheerio

我正在尝试使用node js和cheerio抓取这个html,以从span标签中获取72。但是,当我放置选择器时,它不会返回任何内容(空字符串)。 在这种情况下,我想要 72 位于...

回答 1 投票 0

如何使用cheerio和axios选择图像url

const express = require("express"); const Cheerio = require("cheerio"); const axios = require("axios"); const cors = require("cors"); 常量应用程序 = Express(); ...

回答 2 投票 0

如何使用cheerios仅删除DOM中的父元素

以下是文件结构 3166 42@gmail.com <

回答 1 投票 0

无法使用 Cheerio 抓取 Google 地图

我想首先这是我第一次使用 Cheerio 库,所以我可能会犯一个简单的错误。我正在尝试抓取 Google 地图页面以查找列出的电话号码。当我你...

回答 1 投票 0

Cheerio 抓取特定 html 数据元素时遇到的问题

嗨,我正在尝试使用 Cheerio 从网站上抓取一些数据。这是周一至周五的菜单 我找到了一种从周三到周五抓取菜单的方法,但周一和周二我很挣扎。 该...

回答 1 投票 0

CheerioJS 获取具体 <li> 标题文本“我想要什么”

我正在尝试获取标题为“我想要的”的 li 元素 这是我的代码: 让想要= [] $$('li').each((wantIdx,wantElement) => { 常量想要= $(

回答 2 投票 0

如何使用axios和cheerio实现多页面抓取

您好,我正在使用 axios 和 Cheerio 来抓取一些数据。我想抓取多个页面, url 结构类似于 example.com/?page=1。我如何用计数器抓取每个页面? axios({...

回答 1 投票 0

如何仅在 < strong > 为“纬度”时抓取跨度值? NodeJS Cheerio

假设这个 HTML 列表: 管理员名称 阿姆斯特丹 纬度 假设这个 HTML 列表: <li> <strong> Admin name </strong> <span itemprop="addresslocality"> Amsterdam </span> <li> <li> <strong> Latitude </strong> <span itemprop="addresslocality"> 52.370216 </span> <li> <li> <strong> Longitude </strong> <span itemprop="addresslocality"> 4.895168 </span> <li> 如何获取纬度和经度的跨度值?如果我只是 .get() 第二个和第三个 itemprop 有时会得到不需要的值。 (基于列表中 itemprop 属性的数量) 尝试使用 contains 选择器: dom.find('strong:contains("Latitude")').next().text().trim() // 52.370216

回答 1 投票 0

如何显示循环抓取的响应(cheerio)

我正在抓取这个网站以收集 2013 年的所有行,但有 7 页,我的请求处于循环状态。收到全部 7 个回复后如何显示结果?如果我...

回答 1 投票 0

cheeriojs - 如何循环遍历每个对象?

我有下面的代码: $('.name').filter(function(){ var 数据 = $(this); 名称 = data.text(); json.name = 名称; }) 这将从该 div 返回文本: 我有下面的代码: $('.name').filter(function(){ var data = $(this); name = data.text(); json.name = name; }) 这将返回该 div 中的文本: <a href="javascript:void(0)" class="name">This is a name</a> 页面上基本上有大约 20 张人物照片,因此页面上大约有 20 个左右 <a> 标签,类名为 name。我如何循环遍历每个 <a> 标签并生成一个 JSON 变量,其中包含如下所示的内容 { [id: 0, name: 'name 1'],[id: 1, name: 'name 2'] } 目前我只能让它保存一个名字的值,目前对我来说没什么用! 任何帮助表示赞赏! 看来你有可用的 jQuery,这稍微简化了任务。使用.each(): var myList = []; var id = 0; $('name').each(function() { var name = $(this).text(); myList.push({id: id, name: name}); id = id + 1; } console.log(myList);

回答 1 投票 0

node.js + Cheerio scrape:传递一组网址进行下载?

首先,这是我到目前为止所取得的进展的代码: var http = require("http"); // 下载 URL 并调用的实用函数 // 回调数据。 函数下载(url,回调){ ...

回答 3 投票 0

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.