首页 > 解决方案 > 如何使用 puppeteer 从网站打印响应 json?

问题描述

我尝试让谷歌翻译网站为我做一些工作,该网站返回一个带有 json 文件的空白网页。使用网络浏览器,我可以保存 json 文件并在文本编辑器中打开它。

我正在尝试使用 puppeteer 自动完成此操作。这是我的代码:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({headless:false, args: ["--no-sandbox"]});
  const page = await browser.newPage();

  // Approach 1:
  const response = await page.goto('https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=zh&dt=t&q=Edit%20Report');
  let text = await response.text();
  console.log(text);
  let json = await response.json();
  console.log(json);

  await browser.close();
})();

当我运行此代码时,会启动浏览器,但返回的 json 文件仍会自动保存到磁盘而不是打印到控制台。我应该使用什么木偶类来完成这项任务?

标签: puppeteer

解决方案


由于它是 API 调用并且预期结果是 JSON,您可以使用简单的 nodsJS 或 Jquery 代码返回响应,如下所示。

$.get('https://translate.googleapis.com/translate_a/single?`client=gtx&sl=en&tl=zh&dt=t&q=Edit%20Report', (data) =>`
{
    console.log(data);
});

但是如果你特别喜欢使用 puppeteer 并且想要返回响应。您将执行以下操作。

通过运行将 Jquery 依赖项添加到您的项目中

npm install jquery

将 JQuery 导入项目。

调用以下代码,无需启动浏览器。

 $.get('https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=zh&dt=t&q=Edit%20Report', (data) =>
{
    console.log(data);
});

这是 JSfiddle 代码的链接https://jsfiddle.net/faizmagic/0h6cm1o4/latest/

我希望这有帮助。


推荐阅读