gpt4 book ai didi

javascript - 使用 NodeJs 获取网站的 JSON 搜索结果

转载 作者:行者123 更新时间:2023-12-01 01:06:59 24 4
gpt4 key购买 nike

由于我是 Node 新手,我试图使用 Node 获取 JSON 形式的网站搜索结果,并且我也尝试过 http chunk 方法和 Express get,但找不到它。网址:https://www.cyccomputer.pe/buscar?search_query=mouse

最佳答案

网址 https://www.cyccomputer.pe/buscar?search_query=mouse 不返回 json。所有者呈现 html 页面,并且提供 json。

您可以通过抓取来实现您想要的目标。您可以使用 requestrequest-promiseaxios 等包来获取 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>
...

然后你可以使用html2jsonhtml-to-json等包将html解析为json如:

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</pre>
<pre id="output" class="goo">goo</pre>
<input id="execute" type="button" value="execute"/>
</div>

// outputs
{
node: 'root',
child: [
{
node: 'element',
tag: 'div',
attr: { id: '1', class: 'foo' },
child: [
{
node: 'element',
tag: 'h2',
child: [
{ node: 'text', text: 'sample text with ' },
{ node: 'element', tag: 'code', child: [{ node: 'text', text: 'inline tag' }] }
]
},
...

更新:(针对OP的问题)

您可能还想使用 cheerio 包来获取 html 的 body 并将其解析为 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))

注意如果您只是控制台日志记录,则深度有限制。看看这个SO Question记录整个对象`

关于javascript - 使用 NodeJs 获取网站的 JSON 搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55543250/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com