首页 > 编程语言 >C# 获取网页上指定的元素

C# 获取网页上指定的元素

时间:2023-08-14 22:37:03浏览次数:44  
标签:htmlDocument 网页 C# System 获取 new var using class

直接上代码

//using System;
//using System.Net.Http;
//using System.Threading.Tasks;
//using HtmlAgilityPack;
//using Newtonsoft.Json;

//class Program
//{
//    static async Task Main(string[] args)
//    {
//        using var httpClient = new HttpClient();
//        var url = "https://go-upc.com/search?q=776545980144"; // 替换为你要获取数据的网页地址
//        var response = await httpClient.GetAsync(url);
//        var htmlContent = await response.Content.ReadAsStringAsync();

//        var htmlDocument = new HtmlDocument();
//        htmlDocument.LoadHtml(htmlContent);

//        var selectedNode = htmlDocument.DocumentNode.SelectSingleNode("//div[@class='target-class']");
//        if (selectedNode != null)
//        {
//            var data = selectedNode.InnerText; // 提取节点内部文本数据

//            var jsonData = new { Data = data };
//            var jsonResult = JsonConvert.SerializeObject(jsonData);

//            Console.WriteLine(jsonResult); // 返回JSON数据给前端
//        }
//    }
//}


using System;
using System.Net.Http;
using System.Threading.Tasks;
using HtmlAgilityPack;
using Newtonsoft.Json;

class Program
{
    static async Task Main(string[] args)
    {
        using var httpClient = new HttpClient();
        var url = "https://go-upc.com/search?q=776545980144"; // 替换为你要获取数据的网页地址
        var response = await httpClient.GetAsync(url);
        var htmlContent = await response.Content.ReadAsStringAsync();

        var htmlDocument = new HtmlDocument();
        htmlDocument.LoadHtml(htmlContent);

        var productNameNode = htmlDocument.DocumentNode.SelectSingleNode("//h1[@class='product-name']");
        var eanNode = htmlDocument.DocumentNode.SelectSingleNode("//td[@class='metadata-label'][contains(text(), 'EAN')]/following-sibling::td");
        var upcNode = htmlDocument.DocumentNode.SelectSingleNode("//td[@class='metadata-label'][contains(text(), 'UPC')]/following-sibling::td");
        var descriptionNode = htmlDocument.DocumentNode.SelectSingleNode("//h2[contains(text(), 'Description')]/following-sibling::span");

        if (productNameNode != null && eanNode != null && upcNode != null && descriptionNode!=null)
        {
            var productName = productNameNode.InnerText.Trim();
            var ean = eanNode.InnerText.Trim();
            var upc = upcNode.InnerText.Trim();
            var description = descriptionNode.InnerText.Trim();

            var jsonData = new
            {
                ProductName = productName,
                EAN = ean,
                UPC = upc,
                Description = description
            };

            var jsonResult = JsonConvert.SerializeObject(jsonData);

            Console.WriteLine(jsonResult); // 返回JSON数据给前端
            Console.ReadLine();
        }
    }
}

  

标签:htmlDocument,网页,C#,System,获取,new,var,using,class
From: https://www.cnblogs.com/Yytan-BK/p/17629953.html

相关文章

  • mysql添加索引的方法(Navicat可视化加索引和sql语句加索引)
    mysql添加索引的方法(Navicat可视化加索引和sql语句加索引) 使用索引的场景:阿里云日志里出现了慢sql 然后发现publish_works_id字段会经常用于一些关联,所以决定把这个字段加上索引,优化sql可视化navicat操作字段加索引,选择字段所在的表,第一步:右键->设计表第二步......
  • 2019考研英语(一)小作文真题解析与参考 Aiding Rural Primary Schools 答复信
    2019考研英语(一)小作文真题解析与参考Directions:Supposeyouareworkingforthe“AidingRuralPrimarySchools” projectofyouruniversity.Writeanemailtoanswertheinquiryfromaninternationalschoolvolunteer,specifyingthedetailsoftheproject.Yous......
  • Codeforces Ronud 892(Div.2)
    CodeforcesRonud892(Div.2)关于A题我有话说传送门题意给定一个长度为n的数组a,问能否将元素全部放入两个空数组b和c中,使得b和c数组同时满足非空,且c数组中没有任何数是b数组中的数的除数,如果可以输出一种存储方案,不可以就输出-1思路当天晚上一开始没有做出来,我一开始的思路是......
  • Relying upon circular references is discouraged and they are prohibited by defau
    Relyinguponcircularreferencesisdiscouragedandtheyareprohibitedbydefault.创建springboot项目时,使用的版本是2.7.13,运行项目时报错Relyinguponcircularreferencesisdiscouragedandtheyareprohibitedbydefault.Updateyourapplicationtoremovethe......
  • C++11时间日期库chrono的使用
    chrono是C++11中新加入的时间日期操作库,可以方便地进行时间日期操作,主要包含了:duration,time_point,clock。时钟与时间点chrono中用time_point模板类表示时间点,其支持基本算术操作;不同时钟clock分别返回其对应类型的时间点。clock时钟是从一个时点开始,按照某个刻度的计数;chrono同......
  • Elasticsearch在项目中的使用
    一.mysql和es的比较1.mysql适合存储海量的数据,但是某些情况下的查询效率过低。正常可以通过添加索引等加快查询速度,但是模糊查询的时候效率很低,会触发全局扫描SELECT * FROM product WHERE title like '%优惠券%' 2.基于Lucene引擎构建的开源分布式搜索分析引擎,可......
  • Codechef - Longest AND Subarray(位运算)
    题目大意  给定一个正整数N,其序列为[1,2,3,...,N],找到一个长度最大的连续子列,使得其所有元素取与运算的结果为正(最终输出只需要输出最大长度即可)。 思路  刚开始可能并不好注意到,可以举一些小的样例来找规律。比如2:1&2=0,不满足条件,所以只能取长度为1的数组[1]或......
  • "Don't be shy. Speak English loudly and crazily!"
    "Don'tbeshy.SpeakEnglishloudlyandcrazily!" 俞敏洪犀利点评马云、王石、刘强东、雷军英语水平俞敏洪:马云8岁学英语,考上杭师范读专科,而我在北大读本科! 李阳、马云、俞敏洪,这三个中国最著名的英语老师,只有李阳仍坚守在一线。是啊,当马云再次登上福布斯中国富豪榜......
  • CSRF漏洞挖掘
    csrf漏洞出现的原因:网站接口被第三方网站调用时cookie被直接利用了如何确定一个网站是否具有csrf漏洞第三方网站调用敏感接口成功,则具有漏洞。如何操作BP可以对某些接口进行cdrf漏洞检测 可以生成一个html文件->poc,在浏览器中访问就可以确定是否包含CSRFTester也可以生......
  • docker 安装rocketMQ和新版控制台
    docker安装rocketMQ和新版控制台参考文章:https://www.cnblogs.com/d1012181765/p/15603378.html1.拉取镜像#拉取镜像dockerpullrocketmqinc/rocketmq2.创建数据挂载目录mkdir-p/docker/rocketmq/data/namesrv/logs/docker/rocketmq/data/namesrv/storemkdir-p......