gpt4 book ai didi

javascript - 使用cheerio.js进行抓取,得到: Error: Can only perform operation while paused

转载 作者:太空宇宙 更新时间:2023-11-04 02:02:47 25 4
gpt4 key购买 nike

尝试从此网站抓取威士忌名称、image_url 和描述:https://www.thewhiskyexchange.com/c/33/american-whiskey?filter=true#productlist-filter使用cheerio.js。我想将该信息转换为 JSON 对象数组以存储在我的 MongoDB 中。无法显示网站的整个html,但这里是无序列表的相关基本结构的一部分:

<body>
<div class="siteWrapper">
<div class="wrapper">
<div class="products-wrapper">
<ul class="products-list">
<li>
<a>
<div class="product-content">
<div class="information">
<p class="name">
" Jack Daniel's Old No. 7"
<span>Small Bottle</span>
</p>
</div>
</div>
</a>
</li>
<li></li>
<li></li> etc. </all closing tags>

一开始只是尝试在 <p class="name"> 中获取威士忌名称,没有来自 <span> 的任何文本标签,我在浏览器控制台中使用了这个 jQuery 代码,它完全满足了我的需要:

$('ul.products-list > li').each(function(index) {
const nameOnly = $(this).find('a div div.information p.name').first().contents().filter(function() {
return this.nodeType == 3;
}).text();
const whiskeyObject = {name: nameOnly};
const whiskeys = JSON.stringify(whiskeyObject);
console.log(whiskeys);
})

在我的应用程序文件 (whiskey-scraper.js) 中使用 Cheerio 尝试相同的代码:

const express = require('express');
const request = require('request');
const cheerio = require('cheerio');
const fs = require('fs');
const app = express();
const port = 8000;

request('https://www.thewhiskyexchange.com/c/33/american-whiskey?filter=true#productlist-filter', function(error, response, body) {
if(error) {
console.log("Error: " + error);
}
console.log("Status code: " + response.statusCode);

const $ = cheerio.load(body);
// console.log(body);
$('ul.products-list > li').each(function(index) {
const nameOnly = $(this).find('a div div.information p.name').first().contents().filter(function() {
return this.nodeType == 3;
}).text().trim();
const whiskeyObject = {name: nameOnly};
const whiskeys = JSON.stringify(whiskeyObject);
console.log(whiskeys);
})
});

app.listen(port);
console.log(`Stuff is working on Port ${port}!`);

当我运行node inspect whiskey-scraper.js时在我的终端中,控制台记录状态代码 200,但也记录此错误:

"Error: Can only perform operation while paused. - undefined
at _pending.(anonymous function) (node-
inspect/lib/internal/inspect_client.js:243:27)
at Client._handleChunk (node-inspect/lib/internal/inspect_client.js:213:11)
at emitOne (events.js:96:13)
at Socket.emit (events.js:191:7)
at readableAddChunk (_stream_readable.js:178:18)
at Socket.Readable.push (_stream_readable.js:136:10)
at TCP.onread (net.js:561:20)"

无法弄清楚这意味着什么或如何解决此错误。关于如何消除此错误的任何想法,至少得到我的 console.log(whiskeys);线路工作?如果我能让它工作,我就可以从那里开始。

当我取消注释console.log(body);时我将网站的整个 html 记录到控制台,所以我觉得cheerio 正在从网站获取我需要的信息。一旦消除了这个错误,我就可以获取 image_url、描述,并将其放入我的 MongoDB 中。

谢谢!

最佳答案

找到了解决方案。对于网站,您可以以网格格式或列表格式显示威士忌及其信息 - 并且它们是完全相同的 URL。我正在查看列表格式的 HTML,它使用 <ul><li>格式,但cheerio选择导入网格格式,其中没有无序列表,只是多个嵌套 <div> s。从来没想过!

关于javascript - 使用cheerio.js进行抓取,得到: Error: Can only perform operation while paused,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45401769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com