问题标签 [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 回答
10250 浏览

javascript - 带有选择器的 Node.js 和 Cheerio 解析表

我正在尝试使用 Node.js 和 Cheerio 解析 HTML 表并得到一些结果,但不幸的是我得到的数据太多,不知道如何进一步解析它以仅获取我需要的数据。

这是我到目前为止的一小部分代码..

使用 Chrome 插件来定位选择器,我发现我需要“.clickableRow td”,但我尝试插入的所有方法似乎都不起作用。

为了更清楚一点,html 源代码如下所示 -

那有意义吗?我想要的项目在 HTML 中非常深入,我不知道如何达到那个水平。任何帮助将不胜感激!谢谢!

0 投票
1 回答
2801 浏览

javascript - 在构建 Cheerio 抓取时遇到问题

我认为这可能只是基本语法。我来自 Java,对 Javascript 非常陌生。例如,当我在所有示例中看到 $ 时,我的大脑一片空白。

解析 HTTP 请求(包含一堆狗节目)的代码如下所示(使用请求库):

这被称为

到现在为止还挺好。我陷入困境的是如何编写 parseShow 函数。我想去类似的东西

但我收到一个错误:

查看堆栈跟踪,看起来 Cheerio 正在创建一个新的。我应该如何将 Cheerio 解析器传递给第二个函数?现在解析器是文件中的全局变量。

我已经尝试了一堆这样的随机事情,但它们也不起作用:

我被迫做的是一堆令人作呕的,脆弱的代码访问tableRow.children[1], tableRow.children[3]等......(HTML有/ r / ns在创建所以很多孩子都是空白)

0 投票
2 回答
2606 浏览

javascript - jsdom/cheerio 大大改变了 html

我正在尝试抓取一个网站,但 jsdom 和 Cheerio 都遇到了问题,这极大地改变了他们获得的 html。最值得注意的是,他们删除了一些标签,例如 table/tr/td 标签等

只需有一个本地文件说 1.html 并做:


编辑:我意识到这很可能是由于无效的 HTML,我的问题是无论如何我可以避免这种情况,就好像您在浏览器中正常查看页面元素在那里一样

更准确地说,我试图刮掉这个:http ://www.puzzledragonx.com/en/monster.asp?n=1


编辑:我意识到这也是某种浏览器问题。如果你用 wget 下载页面并用cheerio 粘贴 HTML,你会得到不同的 html

我还通过 html w3 验证器运行该页面,并且有很多关于 doctype 不允许将元素放置在某个位置的错误,但没有关于无效标记的任何错误

0 投票
1 回答
114 浏览

html - Nodejs 抓取选项

我正在尝试在节点上为我的货币兑换图构建一个抓取引擎,目前我正在使用 request+cheerio,但由于某些银行网站在 html 中不使用 id/class'es,我的代码有时看起来像:

还有什么我可以用的吗?

0 投票
1 回答
7997 浏览

javascript - 如何为这个 HTML 使用 CHEERIO.js?

我想访问 HREF 属性中的 url。SPAN 中的文本——只有第一个列表项。

我有什么作品,但我正在寻找更好的方法。

var url = $('div .A').children().children().children().children()[0].attribs.href;

var title = $('div .A').children().children().children().children()[0].children[2].children[0].data;

0 投票
1 回答
2823 浏览

javascript - 从 Request.js 请求方法返回结果?

结果未定义...

我想使用结果向 HTML 页面添加超链接,但我不知道如何访问结果/在回调之外返回它们。我看过其他帖子,但它们都使用其他库,通常只有一个在范围内使用 console.log 的示例。

0 投票
1 回答
2635 浏览

xml - 使用 Cheerio 抓取嵌套的 xml

我正在尝试使用cheerio 废弃一些PubMed 数据。以下脚本可以正常工作,但是当某些 xml 标记不存在时,它会生成错误排序的输出。

在此示例中,摘要在第一个标题下方输出,而不是第二个,因为第一篇文章不包含摘要。

0 投票
1 回答
1449 浏览

javascript - 节点 Cheerio 抓取整个站点

有没有人使用 Node Cheerio 来抓取整个网站,而不仅仅是抓取器指向的主页/首页?

目前我正在做以下仅抓取目标页面的操作。

0 投票
1 回答
308 浏览

javascript - 在 Meteor 中插入抓取的内容(通过cheerio)时出现问题

具体来说,我正在尝试(使用通过 Discover Meteor 书构建的非常简单的应用程序)从 Hacker News 中抓取帖子并将它们插入到 Meteor 收藏中,让“新帖子”页面更新,其中包含 20 条左右的新文章。黑客新闻头版。

我的标题上有一个按钮连接到 Meteor.call 事件:

然后(成功地)调用一个名为 getHnArticles 的 Meteor.methods 函数:

这样做的最终结果是,来自 Hacker News 的排名最高的帖子被精美地插入。但其他人都没有。

我将名为 result_set 的数组发送到 console.log,它会输出首页:

等等。我得到了一个不错的大数组。

知道这里出了什么问题吗?当代码循环通过 Meteor Collections 时,我是否太快地插入记录,还是 Mongo 插入问题?

谢谢!我对 Meteor 很陌生,我喜欢它。但我仍在尝试在 Meteor 中使用异步节点的东西。

编辑:我忘了补充一点,当我查询 MongoDB 实例时,它显示只插入了顶部链接。

0 投票
1 回答
685 浏览

jquery - Cheerio find 方法在抓取时无法找到

我正在使用以下代码

我的问题是,为什么 .each 循环中的第三行不能是

如果我使用该行,则输出为空,但下载的 xml 文件的结构告诉我不应该是这种情况。