【发布时间】:2020-11-15 13:04:27
【问题描述】:
我正在使用以下在 nodejs 中实现 express 的函数。我还使用cheerio 库进行一些网络抓取。下面的函数工作得很好,但这不是我想要的。而不是像这样传递URL,我想直接上传文件。
router.post('/transcript', async (req,res)=>{
const result = await request.get("https://www.codingwithstefan.com/table-example/");
const $ = cheerio.load(result);
$("body > table > tbody > tr > td").each((index, element) => {
console.log($(element).text());
});
});
我在使用 Cheerio 时遇到了多个问题,因此我决定使用调用中的 URL 对其进行测试。该网站不再是一张桌子。现在我实际上想要做的是相同的,但不是像这样传递 URL,我想直接上传我的 HTML 文件。我只是通过右键单击页面保存网站并另存为。我只是将网页的 HTML 文件保存在我的桌面上(名为 b.html)。现在我正在实现相同的功能,但不是像这样传递 URL,我只是使用以下 curl 命令 curl -d "@C:/Users/yehya/Desktop/b.html" http://localhost:5000/api/transcript 将 HTML 文件作为请求传递。该函数几乎完全相同,但在 req.body 中,cheerio.load() 不是 URL。可悲的是,这不起作用,我不明白为什么。该调用从不返回任何内容,我也尝试过使用它,但要么得到 null 要么未定义。我不明白为什么这完全相同的事情不起作用。我猜当我上传这样的 HTML 文件时会发生一些变化,但我无法在这里找出问题所在。我一直盯着我的屏幕好几天了,不胜感激,谢谢。
router.post('/transcript', async (req,res)=>{
const $ = cheerio.load(req.body);
$("body > table > tbody > tr > td").each((index, element) => {
console.log($(element).text());
});
});
【问题讨论】:
-
您是如何尝试加载文件的?
fs.readFileSync?读取文件时是否添加了utf8的编码? -
var fs = require('fs');我所做的一切都是为了加载 fs