Загрузите 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
запустить его. Не забудьте установить зависимости.