NodeJS-如何获得URL的响应?

如何解决NodeJS-如何获得URL的响应?

我有一个网址地址。当我在浏览器中访问该地址时,它会显示一个json文件。我需要在NodeJs中获取该json文件。

我该怎么做?

编辑:这是我当前的代码:

const got = require('got');   

var url = "https://www.instagram.com/p/CFcyO54Hc7k/?__a=1";  

got(url).json().then(result => {     
    console.log(result); 
}).catch(err => {     
    console.log(err); 
});

这就是我得到的结果:

Promise { <pending> }
Hint: hit control+c anytime to enter REPL.
RequestError: Unexpected token < in JSON at position 0 in "https://www.instagram.com/accounts/login/?next=/p/CFcyO54Hc7k/%3F__a%3D1"
    at Object.parseBody [as default] (/home/runner/VengefulUltimateSdk/node_modules/got/dist/source/as-promise/parse-body.js:22:15)
    at /home/runner/VengefulUltimateSdk/node_modules/got/dist/source/as-promise/index.js:157:40
    at JSON.parse (<anonymous>)
    at parseJson (/home/runner/VengefulUltimateSdk/node_modules/got/dist/source/index.js:118:35)
    at Object.parseBody [as default] (/home/runner/VengefulUltimateSdk/node_modules/got/dist/source/as-promise/parse-body.js:11:48)
    at /home/runner/VengefulUltimateSdk/node_modules/got/dist/source/as-promise/index.js:157:40
    at processTicksAndRejections (internal/process/task_queues.js:97:5) {
  name: 'ParseError',code: undefined,timings: {
    start: 1601274389096,socket: 1601274389096,lookup: 1601274389106,connect: 1601274389117,secureConnect: 1601274389128,upload: 1601274389128,response: 1601274389467,end: 1601274389511,error: undefined,abort: undefined,phases: {
      wait: 0,dns: 10,tcp: 11,tls: 11,request: 0,firstByte: 339,download: 44,total: 415
    }
  }
}

我的节点版本为12.16.1

解决方法

如果要以json的形式获取它,可以使用访存api(https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API),然后在promise中可以将json作为对象读入js代码中。

fetch('http://server/file.json').then(resp=>resp.json()).then(data=>{do something with data});
,

您可以自己解析JSON,也可以获取用于发出Http请求的库,该库会自动为您解析JSON。 here中有很多库可供选择。我最喜欢的是got(),它将使您能够通过添加简单的.json()来解析JSON,因此返回的解析值是Javascript对象。

const got = require('got');

got("https://www.instagram.com/p/CFcyO54Hc7k/?__a=1").json().then(result => {
    console.log(result);
}).catch(err => {
    console.log(err);
});

当我用您的instagram URL运行以上代码时,我又得到了这个Javascript对象:

{
  graphql: {
    shortcode_media: {
      __typename: 'GraphSidecar',id: '2404017227651993316',shortcode: 'CFcyO54Hc7k',dimensions: [Object],gating_info: null,fact_check_overall_rating: null,fact_check_information: null,sensitivity_friction_info: null,media_overlay_info: null,media_preview: null,display_url: 'https://scontent-sjc3-1.cdninstagram.com/v/t51.2885-15/e35/119980944_890957481429986_8757958615208227911_n.jpg?_nc_ht=scontent-sjc3-1.cdninstagram.com&_nc_cat=102&_nc_ohc=w7zBW_FdRNgAX9BYknl&_nc_tp=18&oh=11424efc118b55180e4d3302d75181ca&oe=5F99EB23',display_resources: [Array],is_video: false,tracking_token: 'eyJ2ZXJzaW9uIjo1LCJwYXlsb2FkIjp7ImlzX2FuYWx5dGljc190cmFja2VkIjp0cnVlLCJ1dWlkIjoiZGIyMzdkMzgzYWVhNDY5YmI0ZWVkZWI4YzlhZDY0YWUyNDA0MDE3MjI3NjUxOTkzMzE2In0sInNpZ25hdHVyZSI6IiJ9',edge_media_to_tagged_user: [Object],edge_media_to_caption: [Object],caption_is_edited: false,has_ranked_comments: false,edge_media_to_parent_comment: [Object],edge_media_to_hoisted_comment: [Object],edge_media_preview_comment: [Object],comments_disabled: false,commenting_disabled_for_viewer: false,taken_at_timestamp: 1600801207,edge_media_preview_like: [Object],edge_media_to_sponsor_user: [Object],location: null,viewer_has_liked: false,viewer_has_saved: false,viewer_has_saved_to_collection: false,viewer_in_photo_of_you: false,viewer_can_reshare: true,owner: [Object],is_ad: false,edge_web_media_to_related_media: [Object],edge_sidecar_to_children: [Object],edge_related_profiles: [Object]
    }
  }
}

如果您想修改现有代码,则可能需要使用JSON.parse()。您必须将现有代码添加到您的问题中,以帮助我们解决问题。

,

您可以在NodeJS中使用axios。

axios.get('https://someapiendpoint.domain.com/v1/api')
  .then((response) => {
    console.log(response.data);
  });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res