C# 结合 Javascript 测试获取天气信息

 

目录

测试效果

范例运行环境

关键代码

C#获取网页数据

前端代码

JavaScript 实现 

总结


测试效果

获取一些简单的天气信息,可以丰富我们的应用系统,比如开发一个小桌面,小组件,增加一些实用性的系统功能,本文将介绍如何使用 C# 并结合 JavaScript 获取天气信息,获取的数据来源于 360 浏览器首页数据,成功的测试效果如下图:

实现这样的效果主要通过如下步骤:

1、通过C#服务端获360欢迎页网页数据。

2、通过JavaScript 截取天气数据片段。

3、通过截取的天气数据片段,放置需要显示的 DOM 容器当中。

范例运行环境

操作系统: Windows Server 2019 DataCenter

.net版本: .netFramework4.7.1 或以上

开发工具:VS2019  C#

关键代码

C#获取网页数据

获取远程地址需要使用到关键方法 GetResponseResult ,具体可以参考我的文章

《C# 实现访问 Web API Url 提交数据并获取处理结果》

关键代码如下:

<%@ Page Language="C#" AutoEventWireup="true"  ValidateRequest="FALSE" %>
<script language="C#" runat="server">
void Page_load(Object sender, EventArgs e)
{if (Page.IsPostBack) { return; }WebService ws = new WebService();string rv = ws.GetResponseResult("https://hao.360.com/?a1004", Encoding.UTF8, "GET", "");_rv.Text = rv;}
</script>

访问的关键 URL 地址为   https://hao.360.com/?a1004  ,获取到的网页数据将存储到 rv 字符串变量里。

前端代码

前端代码主要放置了 today (今天) 和 tomorrow (明天) 的 DIV 容器,另外 id 为 “_rv” 的 Label 控件接受服务返回的远程网页数据。另外,网页背景设置为透明色,以方便嵌入到其它网页应用中。

代码如下:

<html>
<head>
<style type="text/css" >span{color:Silver;text-shadow:1px 1px 1px #000;}em{color:Silver;text-shadow:1px 1px 1px #000;background-color:#4169E1;padding:2px;}
</style>
</head>
<body style="background-color:transparent">
<form runat="server">
<asp:label ID="_rv" style="display:none"  runat="server"></asp:label>
<div id="Div1" style="display:flex;width:170px;align-items:center">
<div id="today" style="display:flex;width:50%;align-items:flex-end"></div>
<div id="tomorrow" style="display:flex;width:50%;align-items:flex-end"></div>
</div>
</form>
</body>
</html>

JavaScript 实现 

结合 JS 计算获取的 DOM 对象,分析代码并截取需要的天气信息,放置到前端容器中进行显示,代码如下:

<script language="javascript">window.onload = function () {document.getElementById('weather-change').click();window.setTimeout(function () {document.getElementById('weather-prov').length = 0;document.getElementById('weather-city').length = 0;document.getElementById('weather-town').length = 0;var newOption = new Option("天津", "03");document.getElementById('weather-prov').appendChild(newOption);var newOption = new Option("天津", "0103");document.getElementById('weather-city').appendChild(newOption);var newOption = new Option("天津", "101030100");document.getElementById('weather-town').appendChild(newOption);document.querySelector("[class*='done v2']").click();window.setTimeout(function () {document.getElementById('today').innerHTML = document.querySelector(".weathertoday").innerHTML;document.getElementById('tomorrow').innerHTML = document.querySelector(".weathertomorrow").innerHTML;window.parent.document.getElementById('desktoploading').style.display = 'none';}, 1000);}, 3000);}
</script>

总结

JavaScript 代码中显示的为指定城市的信息和今明两天简要信息,我们可以继续分析 DOM 对象来获取更多想要的信息,代码在窗口加载完成后使用了模拟点击和延时获取数据信息的方法,以提升获取信息的成功率。

代码这里仅供测试使用,欢迎大家评论指教!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/54175.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

neo4j安装为服务+配置环境变量

目录 neo4j安装为服务 windows services 参照JDK&#xff0c;将neo4j加入到环境变量 neo4j安装为服务 windows services 我的上一篇文章详细写明了如何安装启动neo4j《neo4j安装启动教程对应的jdk配置》&#xff0c;文末的启动neo4j是通过cmd命令行访问bin目录&#xff0c;这…

Git+Jenkins 基本使用(Basic Usage of Git+Jenkins)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

Java企业面试题2

1.语言的分代&#xff1a; 第1代&#xff1a;机器语言 机器语言是最底层的计算机编程语言&#xff0c;它是由二进制数构成的一系列指令&#xff0c;直接与计算机硬件交互。每个二进制位模式代表一条特定的指令或数据地址。因为它是直接在硬件上执行的&#xff0c;所以运行效率…

诚邀见证2024九章云极DataCanvas算力包产品发布会!

算力&#xff0c;是驱动全球智能化升级的关键力量&#xff0c;也是智算经济腾飞的主要燃料。 在智算经济腾起之际&#xff0c;我们洞察未来:算力不仅是生产力还将作为社会性普惠AI资源。我们思考未来:算力产品和模式需要何种创新才能够加速算力普惠的进程?我们定义未来:用单位…

react学习笔记一:react介绍

将view规划成一个个的组件&#xff0c;是一个响应式的声明式的设计。 虚拟dom&#xff0c;减少dom操作。vue的虚拟dom是在react的基础上拓展来的。 单向数据流&#xff1a;是一种数据流动的模式。数据流的方向是有上到下的&#xff0c;在react中主要是从父组件流向子组件。 …

计算机毕业设计 基于SpringBoot框架的网上蛋糕销售系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

【微处理器系统原理与应用设计第十三讲】通用同/异步收发器USART轮询模式应用设计

USART提供两设备之间的串行双工通信&#xff0c;并支持中断和DMA工作。采用轮询、中断和DMA三种方式进行数据收发。 一、功能需求 实现远程串行通信数据的回传确认。微处理器系统构成的测控设备通过USART&#xff08;串口&#xff09;与用户设备&#xff08;上位机&#xff0…

【Python篇】Python 函数综合指南——从基础到高阶

文章目录 Python 函数综合指南1. 函数介绍1.1 什么是函数&#xff1f;1.2 定义函数示例&#xff1a;1.3 调用函数1.4 函数参数1.4.1 必需参数1.4.2 默认参数1.4.3 关键字参数1.4.4 可变长度参数 2. Python 内置函数2.1 字符串处理函数示例&#xff1a; 2.2 数学函数示例&#x…

基于Spring Boot的能源管理系统+建筑能耗+建筑能耗监测系统+节能监测系统+能耗监测+建筑能耗监测

介绍 建筑节能监测系统是基于计算机网络、物联网、大数据和数据可视化等多种技术融合形成的一套节能监测系统。 系统实现了对建筑电、水、热&#xff0c;气等能源、资源消耗情况的实时监测和预警、动态分析和评估&#xff0c;为用户建立了科学、系统的节能分析方法&#xff0c…

如何让大模型更好地进行场景落地?

自ChatGPT模型问世后&#xff0c;在全球范围内掀起了AI新浪潮。 有很多企业和高校也随之开源了一些效果优异的大模型&#xff0c;例如&#xff1a;Qwen系列模型、MiniCPM序列模型、Yi系列模型、ChatGLM系列模型、Llama系列模型、Baichuan系列模型、Deepseek系列模型、Moss模型…

简单题28-找出字符传中第一个匹配项的下标(Java and Python)20240918

问题描述&#xff1a; Java代码&#xff1a; class Solution {public int strStr(String haystack, String needle) {int n1 haystack.length();int n2 needle.length();if (n2 0) {return 0; // 如果 needle 为空字符串&#xff0c;直接返回 0}if (n1 < n2) {return -…

LeetCode[中等] 142. 环形链表 II

给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整…

LeetCode[中等] 438. 找到字符串中所有字母异位词

给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串&#xff08;包括相同的字符串&#xff09;。 思路&#xff1a;滑动窗口 s包含p的异位词 ——> 则…

大数据新视界 --大数据大厂之数据科学项目实战:从问题定义到结果呈现的完整流程

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

组合逻辑电路的设计

目录 基本设计步骤 应用实例1&#xff08;三人表决电路&#xff09; 逻辑抽象 列真值表 化简&#xff08;卡诺图&#xff09; 转化为与非表达式 画逻辑图 应用实例2&#xff08;二进制转换为格雷码&#xff09; 逻辑抽象 列真值表 卡诺图化简 画逻辑图 基本设计…

【rust】rust条件编译

在c语言中&#xff0c;条件编译是一个非常好用的功能&#xff0c;那么rust中如何实现条件编译呢? rust的条件编译需要两个部分&#xff0c;一个是fratures&#xff0c;另一个是cfg。Cargo feature是一个非常强大的功能&#xff0c;可以提供条件编译和可选依赖项的高级特性&…

C++ -命名空间-详解

博客主页&#xff1a;【夜泉_ly】 本文专栏&#xff1a;【C】 欢迎点赞&#x1f44d;收藏⭐关注❤️ C -命名空间-详解 1.C语言缺点之一 -- 命名冲突2.命名空间2.1定义2.2使用访问命名空间中的变量展开命名空间域指定访问命名空间域 2.3其他功能 3.C 标准库中的命名空间指定展开…

云计算实训50——Kubernetes基础命令、常用指令

一、Kubernetes 自动补齐 # 安装自动补齐软件 [rootmaster ~]# yum -y install bash-completion # 临时开启自动补齐功能 [rootmaster ~]# source # 永 久开启自动补齐功能 [rootmaster ~]# echo "source > ~/.bashrc 二、Kubernetes 基础命令 kubectl [command] …

Linux:进程(二)

目录 一、cwd的理解 二、fork的理解 1.代码共享 2.各司其职 3.fork的返回值 三、进程状态 1.进程排队 2.进程状态 运行状态 一、cwd的理解 cwd&#xff08;current working directory&#xff09;。译为当前工作目录。 在C语言中&#xff0c;使用fopen函数打开文件时&…

MindShare PCIE 3.0 笔记-第一二章

MindShare 官网&#xff0c;地址如下: MindShare Chapter 1&#xff1a;PCIE 背景介绍 - PCI 总线模型 1. 以 PCI 总线作为外设总线的 SOC 芯片架构 下图展示了一个以 PCI 总线作为外设总线的 SOC 芯片架构(PCI 总线类似 AXI 下的 AHB&#xff1f;)&#xff1a; 由上图可知…