Загрузите json-файл с сайта pubchem

Моя задача - загрузить json-файл с сайта (pubchem), используя только строку запроса (например, h2o) и JS. Я знаю, что это можно сделать с помощью синтаксического анализа, но это слишком много кода из-за количества страниц, которые мне нужно проанализировать, чтобы получить пункт назначения. Есть ли другие варианты решения проблемы? Использование Google не дало мне ни малейшего представления):

1 ответ

Решение

Вам все равно потребуется выполнить некоторый синтаксический анализ, если вы действительно хотите автоматизировать это, поскольку только использование параметра запроса приведет вас к главной странице, на которой перечислены "статьи", и вам нужно будет найти URL-адрес, который даст вам Формат JSON. Но! Я думаю, вы можете "перепроектировать" его, поскольку URL-адреса статьи и ее формат JSON очень похожи.

Я проверил веб-сайт и попытался загрузить один из файлов, которые у них есть для https://pubchem.ncbi.nlm.nih.gov/compound/3076959, и оказалось, что для представления JSON это был URL https://pubchem.ncbi.nlm.nih.gov/rest/pug_view/data/compound/748328/JSON/

Как видите, они очень похожи, и вы можете понять, как разные темы, такие как compound например, создать конечную точку вывода JSON.

Чтобы загрузить файлы JSON с помощью NodeJS, нужно использовать node-fetch модуль или axios библиотека для отправки ваших HTTP-запросов в конечную точку JSON, и оттуда вы можете сохранить ответ в файл на своем компьютере.

Вот пример того, как это можно сделать с axios и NodeJS fs модуль, чтобы сохранить файл на вашем компьютере.

const fs = require("fs");
const fetch = require("node-fetch");

async function downloadASJson(url, fileName) {
  const response = await fetch(url);
  const jsonContent = await response.buffer();

  fs.writeFile(`${fileName}.json`, jsonContent, "utf8", function (err) {
    if (err) {
      console.log("An error occured while writing JSON Object to File.");
      return console.log(err);
    }
    console.log("JSON file has been saved.");
  });
}

try {
  downloadASJson(
    "https://pubchem.ncbi.nlm.nih.gov/rest/pug_view/data/compound/748328/JSON/",
    "2-Methyl-3-(5'-bromobenzofuroyl-2')-4-dimethylaminomethyl-5-hydroxybenzofuran HCl H20"
  );
} catch (err) {
  console.log(error);
}

Вы сохраняете следующий код в файле с именем app.js например, и вы можете использовать node app.jsзапустить его. Не забудьте установить зависимости.

Другие вопросы по тегам