问题标签 [cheerio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1228 浏览

jquery - 使用 Cheerio 的正则表达式搜索格式不佳的 HTML 的叶节点

我有一些格式不正确的 HTML(例如下面的 HTML),我想获取其文本与给定正则表达式匹配的叶节点(没有任何其他子节点):

我正在使用cheerio,它本质上实现了jQuery 遍历API。到目前为止我已经尝试过:

  1. 选择:contains器不支持正则表达式,甚至不区分大小写的文本:

    /li>
  2. each,然后是标准的 JavaScript match

    /li>
  3. children,但它输出一个字符串,即 HTML 中的所有文本:

    /li>

我认为问题在于嵌套子元素的数量可变,出于某种原因,我确实得到了所有元素,但是每个元素都有一堆子元素,我无法遍历它们并且测试文本。

这就是我的对象的样子

您可以看到有一堆可变嵌套的元素,通常.find()可以用于搜索中的所有元素,<body>但在这种情况.find().filter()根本不起作用。

关于如何对这个 HTML 中的文本进行正则表达式搜索的任何想法?

可以在此处找到完整的 HTML 示例。

0 投票
2 回答
10455 浏览

node.js - 节点jscheerio xml

我有以下代码,它可以正常工作:

但我想从同一页面获取以下“id”之后的值,但无法获取!

这是我目前拥有的代码

任何帮助表示赞赏。

0 投票
1 回答
189 浏览

node.js - 将 var 插入 url 并在 node js 中使用cheerio/request

我正在尝试从原始 url 中获取一个变量,将其插入第二个 url,访问该 url,然后从中访问变量。我有两个问题:

问题 1:'myurl' 变量返回值

也就是说,它没有采用“myid”变量。

问题 2:当我想访问 DOM 时,如何遵循 'myurl' url?我是否对“myurl”提出另一个“请求”?

到目前为止,这是我的代码:

0 投票
2 回答
676 浏览

node.js - 带有cheerio和request的节点js中的增量和非增量url

我正在尝试使用cheerio从页面中抓取数据并通过以下方式请求:

我正在努力解决如何做到这一点(注意,我只熟悉节点 js 和 Cheerio/request 来完成这个任务,即使它可能并不优雅,所以我没有在寻找替代库或语言来做到这一点,抱歉) . 我想我错过了一些东西,因为我什至想不出这怎么可能。


编辑

让我换一种方式试试。这是代码的第一部分:

返回的第一个页面如下所示

上面的 URL 需要递增 s=0、s=1 等“总”次。'id' 需要在第二个请求中输入到下面的 url:

例如,当使用第一个请求返回的 id="189231549" 时,第二个返回的页面如下所示

所以我现在的问题是如何将这两个部分(循环)联系在一起以实现结果(下载并解析大约 70000 页)?

我不知道如何在 JavaScript 中为 Node.js 编写代码。我是 JavaScript 新手

0 投票
1 回答
608 浏览

javascript - Cheerio $ 变量为什么不会影响其他会话?

我在 node.js 上使用cheerio 模块。而且我知道在没有'var'关键字的函数中声明的变量是全局范围。

今天我认识到当cheerio 将http body 加载到$ 变量中时,该变量不使用keyward 'var'。我没有任何问题。但是突然间我就糊涂了。在我看来,变量 $ 是全局范围,因此所有连接到服务器的会话必须共享相同的变量。

我认为我对 javascript 有错误的概念。请让我解决这个问题。

0 投票
4 回答
392 浏览

javascript - 网页抓取基础

我正在尝试网页抓取,因为我可以看到很多潜力可以用它来做有趣的事情。我花了几个小时研究我需要什么,我决定使用带有“request”和“cheerio”模块的 node.js 来执行抓取。

所以对于第一个项目,我想我会尝试从这个随机句子生成器站点获取一个随机句子:http ://watchout4snakes.com/wo4snakes/Random/RandomSentence

标记看起来相对简单,这是我感兴趣的一点:

所以我想要的位是跨度(显然在检查实际页面时会有所不同),我编写了以下 Javascript 文件并在节点中运行它:

我收到通知,所以我做了一些检查并确定我已经正确地抓取了页面的数据。所以现在我要做的就是选择#resultID 字段中的文本。但是,我只是给了一个空白空间,事实上,如果我让cheerio 模块打印该区域的实际标记,我会得到一个<span ID="result"></span>没有随机句子的内部。

我最初的猜测是,在随机句子脚本完成运行之前,节点正在抓取标记。但我不知道诊断发生了什么的方法,所以有人知道吗?

0 投票
1 回答
232 浏览

javascript - 我如何从 node.js 中的请求块写入(打印)到文档

我写了一些服务器端代码,应该从雅虎获取实时数据,然后在我运行服务器时将其打印到控制台和浏览器,问题是我找不到打印到文档的函数请求块。这是我的代码:

这是我在控制台 Files\node.js\node_modules\YfTemp.js:49 >>; SyntaxError:Module._compile 在 Object.Module._extensions..js 在 Module.load 在 Function.Modul._load 在 Function.Module.runMain 在 node.js:906:3 的输入意外结束

0 投票
1 回答
958 浏览

javascript - Navigation html with Cheerio web page scraper

I'm following this tutorial how to screen scrape with cheerio for Node.js and I'm 2-seconds away from just downloading the entire page and using Javascript to extract the information I need, which I'm sure is much more difficult than actually using Cheerio, but I'm having difficulty understanding now to navigate the HTML with Cheerio. How do I extract the number '2' "blind-cow-white-number"?

Here is the HTML:

How do I achieve this with cheerios? Is there a web screen scraper for node.js that allows me to use xpath instead?

0 投票
2 回答
8957 浏览

node.js - 在 node.js 中从cheerio 保存数组

我有这段代码,但我无法创建一个新数组以供进一步使用:

当我运行代码时,它正在列出undefined。但是,如果我这样写代码:

然后它显示正确的结果,undefined但当我想稍后使用它时。有人可以帮我解决这个问题。

0 投票
0 回答
3856 浏览

node.js - 用cheerio [node.js]模拟按钮点击

谁能指导我如何用cheerio模拟按钮点击?

该按钮是一个图像按钮。点击后如何处理__dopostback

谢谢

编辑:我正在尝试以下代码