我正在学习使用JavaScript进行网络抓取,当try 登录到控制台一个简单的网页时,我遇到了一个奇怪的404错误:
加载资源失败:服务器响应状态为404 (未找到)拒绝执行来自"[.]的脚本 playbook "因为它 SME类型("text/html")不可执行,并且是严格的SME类型 已启用判断.
我怀疑第二个错误只是await axios.get(url)无法正常工作的失败的副作用.
我的代码:
import { load } from "cheerio";
import axios from "axios";
const testGet = async function (url) {
try {
const response = await axios.get(url);
const html = response.data;
const $ = load(html);
console.log($.html());
} catch (error) {
console.error(error);
}
};
const url = "https://books.toscrape.com";
testGet(url);
请注意,我当然可以使用普通网络浏览器访问https://books.toscrape.com的内容.
已经确保我的Package.json列出了axios和Cheerio,如下所示:
{
"type": "module",
"dependencies": {
"axios": "^1.6.8",
"cheerio": "^1.0.0-rc.12"
}
}
node -v:
v18.17.1
多次重新启动实时服务器,在CoPilot和chatGPT的帮助下判断拼写错误,但没有发现任何问题.
重新安装了cheerio并手动将""类型":"模块"添加到Package.json文件中,因此现在该脚本在带有node .\script.js
的终端中直接运行时可以按预期工作,但在live-server中运行时仍然不工作.