Получение результатов поиска на сайте в формате JSON с использованием NodeJs - PullRequest
0 голосов
/ 05 апреля 2019

Поскольку я новичок в Node, и я пытался получить результаты поиска по веб-сайтам в виде JSON с использованием узла, я попробовал метод http chunk и express get, но не смог его найти.URL: https://www.cyccomputer.pe/buscar?search_query=mouse

1 Ответ

2 голосов
/ 06 апреля 2019

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 Вопрос для записи всего объекта`

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...