cheerio 相关问题

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

在元素上调用 .each() 时,Cheerio 返回未定义

我想向网站发出请求,获取其html,然后将其交给cheerio。我需要获取类“.thumb”的所有元素的所有“href”属性。我正在控制台上显示结果,并且我

回答 3 投票 0

如何使用cheerio从根元素中选择直接子元素

假设您有以下设置(其中的数字仅供参考,应忽略): 常量 html = ` ... ... <... 假设您有以下设置(其中的数字仅供参考,应忽略): const html = ` <div 1> <div>...</div> <div 2>...</div> <div>...</div> ... </div>`; $ = cheerio.load(html, null, false); 三个点还可以包含嵌套的div和其他html! 如何选择div 1?我试过了 $(':scope') -> null $('>div') -> null 由于某种原因,我无法选择第一个/根 div。 但即使这是有道理的,你将如何选择它的直接子代 (div 2)。我试过了 $(':scope>div') -> null $().children().eq(1) -> null $(':scope').children().eq(1) -> null 我的印象是:scope并没有像我想象的那样。有什么建议吗? 我不确定你为什么要这样做,而且结构很不寻常(通常有一些识别特征——属性或你可以使用的一些结构),但以下应该有效: $("div:first-of-type"); // if you know it's a div $("*:first-of-type"); // if you have no idea what the root is

回答 1 投票 0

Cheerio 为什么我无法正确访问元素?

你的html: 你的html: <body style="overflow: hidden"> <div class="cookie-box"></div> <div id="next"> <div></div> <div> <main id="main"> <article> <div> <h2>title</h2> </div> <div></div> <div class="layout"> <form></form> <section aria-labelledby="Train"> <ul> <li> <p>title</p> ... </li> <li></li> ... </ul> </section> </div> </article> </main> </div> </div> </body> 我正在尝试迭代思想列表(li 元素): $('#__next div #main article .layout .section[aria-labelledby=Train] > ul > li').map((_, item)=> { const $item = $(item); //here accessing the elements inside }) 但是,我什至没有进入地图内部。 当我尝试仅访问一个元素时 $('#__next div #main article .layout div:nth-of-type(1) h2').text() 即使我不迭代并且只访问特定的 h2 元素,我也获得了独立于内容的所有 h2 元素的巨大列表。 我需要做哪些不同的事情? 谢谢!! 您的选择器中不存在多个属性,例如 #__next 和 .section(应分别为 #next 和 section)。 但是没有明确需要像您一样严格指定树。选择最小值以可靠地消除歧义: import cheerio from "cheerio"; // ^1.0.0-rc.12 const html = ` <main id="main"> <article> <div> <h2>h2 title</h2> </div> <div class="layout"> <section aria-labelledby="Train"> <ul> <li> <p>para 1</p> </li> <li> <p>para 2</p> </li> </ul> </section> </div> </article> </main>`; const $ = cheerio.load(html); const data = [...$('[aria-labelledby="Train"] ul li')].map(e => ({ p: $(e).find("p").text(), // other selectors within the <li> })); const title = $("#main h2").first().text(); console.log(data); console.log(title); 选择较少的选择器意味着您不太容易出现误报(例如,由于链中一个多余的 div 消失而导致选择器中断),并且存在误报的风险(例如,选择了不应该选择的内容,因为使用的消歧不充分)。 如果您最终将文本连接在一起,那么您需要增加特异性。也许您想循环遍历每个项目并对其调用 .text()。如果您只想要一个元素,“最简单”的方法是使用 .first()、.last()、.eq(1) 等,但这些可能不可靠,并且相对于选择精确的选择器而言不是最佳选择。 如果这还不足以让您再次行动起来,您可能需要分享更多背景信息。

回答 1 投票 0

如何从浏览器使用cheerio

我是 JavaScript 新手,并且非常确定我错过了从 HTML 页面(由网络浏览器浏览)使用 JS 的一些基本知识。 我的目标是从动态网站中删除照片链接...

回答 4 投票 0

将cheerio模块导入TypeScript应用程序

我尝试将cheerio导入到我的基于打字稿的应用程序中。 从 'cheerio' 导入 {cheerio}; 控制台.log(cheerio); //不明确的 来自 package.json: ... "@types/cheerio": "^0.22.5 ...

回答 3 投票 0

Cheerio: 如何通过文本内容选择元素?

我有一些像这样的HTML: 代码: 12345 类别: 水龙头 我想获取类别...

回答 3 投票 0

为什么 .attr() 对 $(this) 起作用,但对 every() 的参数不起作用?

我在node.js上使用cheerio(即jQuery服务器端)来解析网页。 当尝试获取元素的 href 属性时,出现以下错误: 类型错误:对象#没有方法'

回答 3 投票 0

使用 Cheerio 从根元素中提取属性

假设以下 HTML: 常量 html = ` .... `; 让 $ = Cheerio.load(html, null, false) 合作...

回答 1 投票 0

如何从Cheerio选择中获得第二个孩子?

我正在从 HTML 中提取内容。假设我的测试设置如下 常量 html = ` A B C` const $ = ch...

回答 1 投票 0

仅保留其中包含文本的元素并删除所有其他元素

我正在尝试使用 puppeteer 和 Cheerio 抓取一个网站。我已经获得了我想要使用 puppeteer 抓取的页面的 html。我已将该 html 加载到 Cheerio 中。 异步函数 run() { 常量

回答 1 投票 0

如何使用cheerio库在元素每次出现时运行inquirer.prompt?

我目前正在开发控制台应用程序,它允许用户更改 HTML 文件内的值。我正在使用 Cheerio 库在 HTML 文件中查找每次出现的类调用...

回答 1 投票 0

使用 Cheerio 抓取雅虎财经汇总表

我正在尝试从雅虎财经汇总表中抓取“1y Target Est, 1,140.21”,如红色标记。 我尝试了这段代码,但没有得到任何数据。 检查标签,我看到“1,1140.21&q...

回答 1 投票 0

使用cheerio从表中抓取所有行

我正在尝试从网页 https://www.barchart.com/stocks/quotes/aapl/performance 上的价格表现表中抓取所有行 这是折线图下方的表格。该表没有任何 id...

回答 1 投票 0

用cheerio解析表行

我尝试使用cheerio 从表中提取一些数据。 这是一个简化版本: 常量表=` 我尝试使用cheerio 从表中提取一些数据。 这是一个简化版本: const table = ` <table> <tr> <td></td> <td class="with-link"><a href="www.foo.bar"></a></td> </tr> </table> ` const row = `<td><a href="www.foo.bar"></a></td>` class Scraper { htmlToDom(html) { return cheerio.load(html) } findHref(row) { return row('a').attr('href') } } const scraper = new Scraper() const cheerioRow = scraper.htmlToDom(row) console.log(scraper.findHref(cheerioRow)) const cheerioTable = scraper.htmlToDom(table) cheerioTable('tr').each(function() { //console.log(this) let td = this.find('td.with-link') console.log(scraper.findHref(td)) }) <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <script src="https://wzrd.in/standalone/cheerio@latest"></script> <title>JS Bin</title> </head> <body> </body> </html> Scraper类有两种方法,一种可以加载html(字符串)并返回一个cheerio对象。另一个需要一个 (cheerio) td 对象,并从中返回 href。 第一个控制台日志显示 findHref 按预期工作。然后我加载整个表,循环遍历它的行(在本例中只有一个)。在 each 循环 this 内部应该是一个 roe (tr) 对象。我尝试找到正确的单元格(带有“with-link”类),并将其传递给findHref。 但我越来越 “类型错误:this.find 不是函数 以防万一,这里是 JsBin:https://jsbin.com/vakofapiro/edit?js,console 代替这个使用cheerioTable。 let td = cheerioTable(this).find('td.with-link').html(); 它会给你 td 的内部 html,它是一个 href。

回答 1 投票 0

使用 Cheerio 绘制雅虎财经汇总表

我正在尝试从雅虎财经汇总表中抓取“1y Target Est, 1,140.21”,如红色标记。 我尝试了这段代码,但没有得到任何数据。 检查标签,我看到“1,1140.21&q...

回答 1 投票 0

Cheerio 无法读取元素的“href”属性,即使它存在于源代码中

我正在尝试为PS5游戏的二手网站创建一个爬虫。为此,我使用 Cheerio 来解析结果列表。在某些情况下它能够正确读取 URL,在其他情况下它

回答 1 投票 0

无法利用应用程序脚本中的 CSS 选择器获取下一页链接

我试图使用应用程序脚本中的CSS选择器从此网页抓取下一页链接,但结果总是未定义,即使我定义的选择器是正确的。 函数 fetchInform...

回答 1 投票 0

如何抓取已禁用 DevTools 的网站

如何抓取已禁用 Chrome DevTools 的网站? 使用 Puppeteer,我尝试使用特定航空公司各自的 CSS 选择器获取其出发和到达时间,但是......

回答 1 投票 0

使用 Cheerio 抓取许多网站

我正在使用cheerio 抓取大约800 个网站,只是为了获取网站标题。我遇到的第一个问题是,有时我会收到一条错误消息,显示“我们遇到了错误:错误:s...

回答 2 投票 0

使用cheerio抓取动态网站[重复]

我在从网站抓取数据时遇到了麻烦。我无法获取 table 的标签 ,然后我无法获取标签 和 的内容文本。我使用cheerio来爬取数据。

回答 1 投票 0

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