URL https://www.cyccomputer.pe/buscar?search_query=mouse
не возвращает json
.Владелец отображает страницу html
и не обслуживает JSON.
Вы можете добиться того, что пытаетесь, соскребая.Вы можете использовать такие пакеты, как request
, request-promise
, axios
и т. Д., Чтобы получить html, например:
const rp = require('request-promise')
rp('https://www.cyccomputer.pe/buscar?search_query=mouse')
.then(html => console.log(html) // html contains the returned html)
// outputs something like:
<!DOCTYPE HTML>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="es-es"><![endif]-->
<!--[if IE 7]><html class="no-js lt-ie9 lt-ie8 ie7" lang="es-es"><![endif]-->
<!--[if IE 8]><html class="no-js lt-ie9 ie8" lang="es-es"><![endif]-->
<!--[if gt IE 8]> <html class="no-js ie9" lang="es-es"><![endif]-->
<html lang="es-es">
<head>
...
Затем вы можете использовать пакеты, такие как html2json
, html-to-json
и т. Д. Для анализаhtml
до json
как:
<code>const html2json = require('html2json').html2json;
rp('https://www.cyccomputer.pe/buscar?search_query=mouse')
.then((html) => {
const jsonData = html2json(html);
console.log(jsonData)
})
// sample from docs
// html to parse
<div id="1" class="foo">
<h2>sample text with <code>inline tag</code></h2>
<pre id="demo" class="foo bar">foo
липкая // выводы{узел: «корень»,ребенок: [{узел: «элемент»,тег: 'div',attr: {id: '1', класс: 'foo'},ребенок: [{узел: «элемент»,тег: «h2»,ребенок: [{узел: 'текст', текст: 'образец текста с'},{узел: 'элемент', тег: 'код', дочерний элемент: [{узел: 'текст', текст: 'встроенный тег'}]}]},...
Обновление: (к вопросу ОП)
Вы можете дополнительно использовать пакет cheerio
, чтобы получить body
html и проанализировать его в json, например:
const cheerio = require('cheerio');
rp('https://www.cyccomputer.pe/buscar?search_query=mouse')
.then(html => {
var data = cheerio.load(html);
var body = data('body').html();
var result = html2json(body);
console.log(result);
})
.catch(e => console.log('error', e.message))
Примечание Если вы просто ведете журнал с консоли, то существует ограничение на depth
.Проверьте это SO Вопрос для записи всего объекта`