构建一个使用 Node.js 在浏览器中抓取 RSS 的网页
Building a webpage that uses Node.js to scrape RSS in the browser
我有一些编码经验,但对 Javascript 和网络开发来说几乎是全新的。
我正在尝试构建一个网页,其主要功能包括从国家气象局抓取 RSS 提要(例如 https://forecast.weather.gov/MapClick.php?lat=34.0536&lon=-118.2455&FcstType=digitalDWML),然后解析输出以显示各种参数(温度、湿度等)。 ) 作为文本。
我调查了一下,似乎 Node.js 有几种不同的方法来抓取外部网页和 return 作为对象的源。但是,据我了解,Node.js 是为服务器端应用程序设计的,而我想在人们可以访问的实际网站上使用它。我坚持以下几点:
- 如何将 Node.js 功能集成到网页代码中? Node.js 通过 Browserify 之类的东西打包的脚本和其他依赖项是否在浏览器中自动“工作”,或者还有更多?
- 是否有独立的 Javascript 编辑器可以让我使用 Node.js 和其他依赖项以及调试脚本?
Node.js是一种在命令行执行JS程序的手段。 <script>
元素是一种在网页浏览器中执行 JS 程序的手段。
Browiserify 是一种工具,它采用一组使用 CommonJS 模块系统 的 JS 模块,并将它们转换为不依赖于 CommonJS 支持的单个文件。 (Node.js 使用 CommonJS 模块系统,浏览器不使用)。
可以在浏览器中使用 Node.js 和使用 browserify 编写 运行 的 JS 代码。并非所有 Node.js 下 运行 的代码都可以在浏览器中转换为 运行。该代码可能依赖于内置于 Node.js 而非浏览器中的 API(例如文件系统访问或网络套接字支持)。
如果您的代码依赖于这些 API,您需要重写它以便它使用浏览器中可用的功能,或者 运行 它在服务器端然后提供网络服务 URL 以便浏览器使用 fetch
或 XMLHttpRequest
.
访问
您的浏览器有什么
您的浏览器将显示一个 HTML 文档,该文档将是一个层次结构,其样式由 CSS 设计,其行为可以通过 Javascript[=10 进行编程=]
您的服务器发送的内容
由于您的浏览器接收到 HTML,因此您的服务器将负责构建 HTML。
你应该刮哪里
你应该在你的服务器上进行抓取,除非你有充分的理由在你的客户端进行抓取。
你应该选择什么服务器
基本上 NodeJS 是一个“不错”的选择。但其他服务器也是不错的选择。您可以通过几乎任何服务器端技术(例如 Node JS)轻松生成 HTML,但您也可以通过 PHP、.NET、Java 或其他环境来生成。但是,由于这是抓取,你可能需要一个多线程环境,所以从这个角度来看,Node JS 不是最好的选择,因为它是基于事件循环的。
底线
您将需要一种多线程服务器技术来抓取并能够生成 HTML 以在您的浏览器中显示您的结果。您可能希望支持轮询或 WebSockets 以获得实时体验,但这是另一个话题。
我有一些编码经验,但对 Javascript 和网络开发来说几乎是全新的。
我正在尝试构建一个网页,其主要功能包括从国家气象局抓取 RSS 提要(例如 https://forecast.weather.gov/MapClick.php?lat=34.0536&lon=-118.2455&FcstType=digitalDWML),然后解析输出以显示各种参数(温度、湿度等)。 ) 作为文本。
我调查了一下,似乎 Node.js 有几种不同的方法来抓取外部网页和 return 作为对象的源。但是,据我了解,Node.js 是为服务器端应用程序设计的,而我想在人们可以访问的实际网站上使用它。我坚持以下几点:
- 如何将 Node.js 功能集成到网页代码中? Node.js 通过 Browserify 之类的东西打包的脚本和其他依赖项是否在浏览器中自动“工作”,或者还有更多?
- 是否有独立的 Javascript 编辑器可以让我使用 Node.js 和其他依赖项以及调试脚本?
Node.js是一种在命令行执行JS程序的手段。 <script>
元素是一种在网页浏览器中执行 JS 程序的手段。
Browiserify 是一种工具,它采用一组使用 CommonJS 模块系统 的 JS 模块,并将它们转换为不依赖于 CommonJS 支持的单个文件。 (Node.js 使用 CommonJS 模块系统,浏览器不使用)。
可以在浏览器中使用 Node.js 和使用 browserify 编写 运行 的 JS 代码。并非所有 Node.js 下 运行 的代码都可以在浏览器中转换为 运行。该代码可能依赖于内置于 Node.js 而非浏览器中的 API(例如文件系统访问或网络套接字支持)。
如果您的代码依赖于这些 API,您需要重写它以便它使用浏览器中可用的功能,或者 运行 它在服务器端然后提供网络服务 URL 以便浏览器使用 fetch
或 XMLHttpRequest
.
您的浏览器有什么
您的浏览器将显示一个 HTML 文档,该文档将是一个层次结构,其样式由 CSS 设计,其行为可以通过 Javascript[=10 进行编程=]
您的服务器发送的内容
由于您的浏览器接收到 HTML,因此您的服务器将负责构建 HTML。
你应该刮哪里
你应该在你的服务器上进行抓取,除非你有充分的理由在你的客户端进行抓取。
你应该选择什么服务器
基本上 NodeJS 是一个“不错”的选择。但其他服务器也是不错的选择。您可以通过几乎任何服务器端技术(例如 Node JS)轻松生成 HTML,但您也可以通过 PHP、.NET、Java 或其他环境来生成。但是,由于这是抓取,你可能需要一个多线程环境,所以从这个角度来看,Node JS 不是最好的选择,因为它是基于事件循环的。
底线
您将需要一种多线程服务器技术来抓取并能够生成 HTML 以在您的浏览器中显示您的结果。您可能希望支持轮询或 WebSockets 以获得实时体验,但这是另一个话题。