”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 使用 FeedRika API 构建趋势分析工具 - 第一部分 - 设置

使用 FeedRika API 构建趋势分析工具 - 第一部分 - 设置

发布于2024-08-06
浏览:318

使用 FeedRika API 构建趋势分析工具

我最近发现了这个名为 FeedRika 的很酷的新闻 API 服务,它为您提供最新的世界新闻以及情绪评分和相关类别。它有一个免费使用层,所以我想尝试一下,看看我可以用它构建什么。

我的想法之一是构建一个工具来查看公司或主题在新闻中的表现。

Building a Trend Analysis Tool with the FeedRika API - Part I - Setup

您可以看到 Google 趋势中的图表,该图表显示某个术语在公共空间中的受欢迎程度,但仅反映了搜索量。它无法让您了解周围的情绪是积极的还是消极的。因此,让我们构建一个工具来搜索新闻,看看该主题的报道是否有利,并显示类似的图表。

以下是我们构建此工具将采取的主要步骤:

  1. 从用户处收集要搜索的主题
  2. 从 Feedrika 获取与主题匹配的新闻文章
  3. 循环返回的文章并提取每篇文章的情感分数
  4. 将这些分数绘制到图表中以直观地显示
  5. 做一些数学运算来生成该主题的其他统计数据,例如平均情绪、总积极/消极等...
  6. 向用户显示源新闻文章,以便他们可以更详细地探索该主题。

在我们开始之前

让我们从 Feedrika 网站获取 API 密钥,以便我们可以获取要使用的新闻文章。
前往 feedrika.com 并注册一个帐户。

注册后,您将在您的个人资料页面 feedrika.com/profile 上找到您的 API 密钥,以及您的信用余额和显示您提出的请求的请求日志。

Building a Trend Analysis Tool with the FeedRika API - Part I - Setup

选择平台

我们可以仅用 HTML、CSS 和 Javascript 构建此工具,但它涉及使用私有 API 密钥,并且通过互联网公开传输该密钥并不是一个好主意,因此让我们使用 Node 和 Express 在服务器上隐藏 API 密钥side 作为环境变量并保持其私有。

我将为绝对初学者量身定制本教程,因此如果您已经熟悉 Node 和 Express,请随意跳到更有趣的部分。

设置:

1. Node 和 Express

确保您已安装 Node 运行时环境。如果没有,您可以在这里获取。

在本地计算机上为此项目创建一个目录并在其中导航。

在终端中运行: npm init -y 以使用默认值初始化节点项目。

运行:npm iexpress 安装express框架。
Express 是一个简单的网络服务器,它允许我们在应用程序中提供页面和 api 路由服务。它易于设置且广泛使用,因此在线寻求帮助和故障排除很容易。

在 VSCode 或您喜欢的 IDE 中打开文件夹并查看内部。

Building a Trend Analysis Tool with the FeedRika API - Part I - Setup

您应该有一个node_modules文件夹、一个package.json文件和一个package-lock.json文件。

2. 创建我们的第一条路线

让我们制作一个欢迎用户使用我们的应用程序的索引页面
在项目的根目录中创建一个新文件“welcome.html”。仅填写基本信息即可开始



    Welcome

This is my news trends app!

让我们设置第一个路由,并在有人打开应用程序时返回这个welcome.html页面

在应用程序的根目录中创建一个“index.js”文件并导入express框架。

// Import the express framework
express = require("express");

// tell node that we are creating an express app
const app = express();

// define the port that the server will run on
const port = 3000;

// define the route for the index page
app.get("/", (req, res) => {
 res.sendFile(__dirname   "/welcome.html");
});

// Start the server and tell the app to listen for incoming connections on the port
app.listen(port, () => {
  console.log(`Server running at http://localhost:${port}`);
});

让我们测试一下我们的进度。
从终端运行节点index.js。您应该看到一条确认消息,表明服务器正在运行

Building a Trend Analysis Tool with the FeedRika API - Part I - Setup

点击终端中的链接或将其粘贴到浏览器中以确认您可以看到欢迎页面

Building a Trend Analysis Tool with the FeedRika API - Part I - Setup

3.环境变量

让我们设置一个环境变量来保存我们的 API 密钥。
在项目的根目录中创建一个新文件“.env”。
从 Feedrika 个人资料页面复制并粘贴您的 API 密钥

Building a Trend Analysis Tool with the FeedRika API - Part I - Setup

我们还添加一个“.gitignore”文件,这样我们就不会意外将此私钥上传到网络

Building a Trend Analysis Tool with the FeedRika API - Part I - Setup

现在进行一些家务处理

我们不想每次对应用程序进行编辑时都从终端启动和停止服务器,所以让我们设置自动重新加载。

打开 package.json 文件并将这些行添加到脚本对象中

"start": "node index.js",
"dev": "nodemon index.js -w"

Building a Trend Analysis Tool with the FeedRika API - Part I - Setup

我们使用带有“-w”标志的nodemon来监视根文件夹中的更改并重新启动服务器。

现在我们可以使用 npm run dev 命令启动我们的服务器,它会自动监视更改并为我们重新启动服务器。

如果您收到无法识别nodemon的错误,请运行此命令以全局安装它,然后重试:
npm 我nodemon -g

好的,设置完成,让我们继续构建我们的应用程序!

我们来更新欢迎页面并添加一个搜索框来询问主题




    Welcome

News trends

Search for a topic to get started

设置样式表

在项目的根目录中创建一个“public”文件夹,用于托管我们的客户端 javascript、css 和图像文件。
在public文件夹中添加一个'styles.css'文件,并为欢迎页面添加一些基本样式

Building a Trend Analysis Tool with the FeedRika API - Part I - Setup

styles.css:

/* Import the Inter font */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap');

body {
    margin: 0;
    padding: 0;
    font-family: 'Inter', sans-serif;
}

#container {
    width: 100%;
    height: 100vh;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}

/* SEARCH FORM */

.search-form input {
    padding: 1em;
    border: 1px solid #ccc;
    border-radius: 8px;
}

.search-form button {
    padding: 1em;
    border: 1px solid #ccc;
    border-radius: 8px;
    background-color: #313131;
    cursor: pointer;
    color: #fff;
}

现在我们需要告诉express如何提供这些静态文件,所以打开'index.js'并添加这一行:
app.use(express.static("public"));

Building a Trend Analysis Tool with the FeedRika API - Part I - Setup

您应该能够立即看到反映的更改,刷新浏览器中的页面并确认

https://i.postimg.cc/d3JpQxZ8/screenshot-13.png

伟大的!现在让我们告诉express如何处理这个表单提交

如果您注意到它提交到“/search”端点的表单,那么让我们设置此路由并处理表单提交

打开“index.js”文件并添加这些行

// define the route for the /search endpoint
app.get("/search", (req, res) => {
  // get the query string from the request
  let query = req.query.topic;
  // send the query string back as the response
  res.send(query);
});

https://i.postimg.cc/nhkhkypD/screenshot-14.png

让我们测试一下,转到浏览器并在框中输入搜索词,然后单击提交
您应该会看到来自服务器的响应,其中显示您的搜索词,如下所示

Building a Trend Analysis Tool with the FeedRika API - Part I - Setup

好工作!

现在我们已经有了一个可用的搜索路径,让我们插入 FeedRika API 并获取该主题的新闻。

即将推出第二部分 - 获取数据

版本声明 本文转载于:https://dev.to/ayush_saran/building-a-trend-analysis-tool-with-the-feedrika-api-part-i-setup-50dp?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • Jsoup 如何使 Java 中的网页抓取变得简单高效?
    Jsoup 如何使 Java 中的网页抓取变得简单高效?
    Java 中网页抓取的 HTML 解析在软件开发领域,有必要从网站中提取有价值的信息以用于各种目的。这种从在线来源提取数据的过程通常称为网络抓取。 Java 程序员可以使用一种多功能工具来完成此任务:HTML 解析器。强烈推荐的 Java HTML 解析器是 Jsoup。它的出色之处在于其用户友好的...
    编程 发布于2024-11-06
  • Jetmaker - 用于用 Python 构建分布式系统的开源框架
    Jetmaker - 用于用 Python 构建分布式系统的开源框架
    项目:Jetmaker 它是 Python 开发人员将多个分布式节点连接到一个系统中的框架,因此分布式应用程序可以访问彼此的数据和服务。它还提供了同步所有节点的工具,就像在多线程和多处理中所做的那样 Github链接:https://github.com/gavinwei121/Jetmaker 文...
    编程 发布于2024-11-06
  • 驯服电子邮件野兽:我的收件箱管理人工智能之旅
    驯服电子邮件野兽:我的收件箱管理人工智能之旅
    是否曾经感觉您的收件箱是一个数字九头蛇,为您回复的每个人发送两封新电子邮件? ??好吧,科技爱好者们,我决定用秘密武器来对付这个怪物:人工智能! ??️ 尤里卡时刻 想象一下:现在是凌晨 3 点,我周围都是空咖啡杯☕☕☕,盯着一个数量可与国会图书馆相媲美的收件箱。就在那时,我突然想到...
    编程 发布于2024-11-06
  • 为什么 Go 是智能合约开发的新竞争者
    为什么 Go 是智能合约开发的新竞争者
    区块链生态系统迅速发展,引入了创新的解决方案和平台,扩展了分布式账本技术的潜力。这项创新的核心是智能合约——自动执行的程序,无需中介即可自动执行协议。传统上,Solidity 一直是编写智能合约的首选语言,尤其是以太坊区块链。 Solidity 旨在在以太坊虚拟机 (EVM) 中运行,为开发人员提供...
    编程 发布于2024-11-06
  • 如何在等待线程完成时保持 tkinter GUI 响应?
    如何在等待线程完成时保持 tkinter GUI 响应?
    等待线程完成时冻结/挂起 tkinter GUI在 Python 中使用 tkinter GUI 工具包时遇到的常见问题执行某些操作时界面冻结或挂起。这通常是由于在主事件循环中使用了阻塞操作,例如加入线程。理解 tkinter Mainlooptkinter mainloop() 是负责处理用户输入...
    编程 发布于2024-11-06
  • C 和 C++ 中条件运算符的行为有什么区别?
    C 和 C++ 中条件运算符的行为有什么区别?
    条件运算符:剖析 C 与 C 的差异在编程领域,条件运算符 (?:) 充当计算表达式并根据结果返回特定值的简洁方法。虽然此运算符在 C 和 C 中的操作类似,但出现了一个微妙的区别,可能会影响代码执行。C:对左值的限制在 C 中,条件运算符对返回左值(驻留在特定内存地址的变量)施加限制。这意味着类似...
    编程 发布于2024-11-06
  • Java中如何高效地检查字符串中是否存在某个字符?
    Java中如何高效地检查字符串中是否存在某个字符?
    高效字符串字符验证在Java中,一个常见的任务是判断某个特定字符是否出现在字符串中。虽然传统方法涉及遍历字符串,但利用 indexOf() 的有效替代方法消除了循环的需要。IndexOf() 逐个字符扫描字符串,并返回指定字符所在的第一个实例的索引出现。如果该字符不存在,则返回值 -1。考虑检查字符...
    编程 发布于2024-11-06
  • 如何使用 PHP 为图像添加水印?
    如何使用 PHP 为图像添加水印?
    使用 PHP 向图像添加水印如果您正在使用允许用户上传图像的网站,则可能需要添加这些图像的水印,以防止未经授权的使用。添加水印可确保您的徽标或品牌在每个上传的图像上都可见。以下是如何在 PHP 中实现此目的:使用 PHP 函数PHP 手册提供了使用以下函数的综合示例:imagecreatefromp...
    编程 发布于2024-11-06
  • 如何抑制 Tensorflow 调试输出?
    如何抑制 Tensorflow 调试输出?
    抑制Tensorflow调试信息Tensorflow可能会在初始化时在终端中显示调试信息,包括加载的库和发现的设备。虽然此信息对于调试目的很有用,但它也会使控制台混乱并使跟踪重要消息变得困难。要禁用此调试信息,您可以使用 os.environ 模块:import os os.environ['TF_...
    编程 发布于2024-11-06
  • 如何确定我的 MySQL 查询是否利用了索引?
    如何确定我的 MySQL 查询是否利用了索引?
    识别 MySQL 索引的性能优化 MySQL 查询时,评估索引的有效性至关重要。获取索引性能指标要确定您的查询是否使用索引,请执行以下查询:EXPLAIN EXTENDED SELECT col1, col2, col3, COUNT(1) FROM table_name WHERE col1 ...
    编程 发布于2024-11-06
  • 如何更改 WAMP/MySQL 中错误消息的语言?
    如何更改 WAMP/MySQL 中错误消息的语言?
    WAMP/MySQL 中的语言错误许多用户都遇到过 WAMP/MySQL 中的错误未以正确的语言显示的问题。多次重新安装WAMP并搜索大量资源后,该问题仍然存在。要解决此问题,需要修改my.ini文件。修改my.ini文件找到行:# Change your locale here ! lc-mess...
    编程 发布于2024-11-06
  • Item - 返回空集合或数组而不是 null
    Item - 返回空集合或数组而不是 null
    不返回 null: 返回 null 代替空集合或数组的方法需要额外的客户端处理以避免异常。 null 问题: 客户端需要添加冗余检查(如果要检查null)。 这些检查中的遗漏可能会被忽视,从而导致错误。 返回集合或数组的方法很难实现。 反对 null 的参数: 不要担心分配空集合或数组的性能,除非...
    编程 发布于2024-11-06
  • 节点 JS || Epress js ||作者:穆尼塞卡·乌达瓦拉帕蒂
    节点 JS || Epress js ||作者:穆尼塞卡·乌达瓦拉帕蒂
    Express js 编写简单的express js应用程序 npm 初始化 npm 安装 Express const express=require('expreass'); const app=express(); app.use('/',(req,res,next)=>{ rse...
    编程 发布于2024-11-06
  • 嵌套括号可以在没有递归或平衡组的情况下匹配吗?
    嵌套括号可以在没有递归或平衡组的情况下匹配吗?
    在没有递归或平衡组的情况下匹配嵌套括号使用正则表达式匹配嵌套括号可能具有挑战性,特别是在像 Java 这样的语言中,其中递归且不支持平衡组。幸运的是,使用前向引用确实可以克服此限制。匹配外部组以下正则表达式 [1] 匹配外部组括号而不对深度施加限制:(?=\()(?:(?=.*?\((?!.*?\1...
    编程 发布于2024-11-06
  • 使用 TDD 方法论和 PostgreSQL 使用 Django 构建完整博客应用程序的指南(部分安全用户身份验证)
    使用 TDD 方法论和 PostgreSQL 使用 Django 构建完整博客应用程序的指南(部分安全用户身份验证)
    Welcome back, everyone! In the previous part, we established a secure user registration process for our Django blog application. However, after succes...
    编程 发布于2024-11-06

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3