0

我已经开始了小型抓取项目,并在一开始就停止了自己。虽然我可以做解析部分,但我在加载页面时遇到了问题。我已将代码减少到尽可能少,但仍然不适用于请求的 URL

// Required Libraries
const cheerio = require("cheerio");
const Nightmare = require("nightmare");

const scraping = (url) => {
  url = "https://www.portaldrazeb.cz/drazba/144ex02170-20-62-rb3p1";
  // All scraping will be done here
  let nightmare = new Nightmare({ show: true });
  const nightmarePromise = new Promise((resolve, reject) => {
    nightmare
      .goto(url)
      .wait("main")
      .evaluate(() => {})
      .end()
      .then((response) => {
        var json = {
          title: "",
          picture: "",
          price: "",
          starting_price: "",
          description: "",
          address: "",
          map: "",
          customer: { name: "", email: "", phone: "" },
        };
        resolve(json);
      });
  });

  return nightmarePromise.then((jsonObj) => {
    nightmare = null;
    return jsonObj;
  });
};

module.exports = {
  scraping: scraping,
};

虽然代码对于任何 URL 都可靠地工作,但它不适用于请求的 URL。仅在 30% 调用中输出正确,其余调用启动 Nightmare 浏览器,页面开始加载,然后在一秒钟内发生几次重置,浏览器关闭并显示以下错误

(节点:18468)UnhandledPromiseRejectionWarning:错误:在 EventEmitter 的 unserializeError(C:\Users\Tomas\Dropbox(个人)\Server\ScrapReality\node_modules\nightmare\lib\ipc.js:162:13)处出现导航错误。(C:\Users\Tomas\Dropbox (Personal)\Server\ScrapReality\node_modules\nightmare\lib\ipc.js:89:13) 在 Object.onceWrapper (events.js:422:26) 在 EventEmitter.emit (events .js:315:20) 在 ChildProcess。(C:\Users\Tomas\Dropbox (Personal)\Server\ScrapReality\node_modules\nightmare\lib\ipc.js:49:10) at ChildProcess.emit (events.js:315:20) at emit (internal/child_process .js:876:12) 在 processTicksAndRejections (internal/process/task_queues.js:85:21) (node:18468) UnhandledPromiseRejectionWarning: 未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志--unhandled-rejections=strict(参见 https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(拒绝编号:3)

4

0 回答 0