首页 .Net .NET(C#) 使用CsQuery后台通过JQuery语法解析Html方法代码

.NET(C#) 使用CsQuery后台通过JQuery语法解析Html方法代码

1、CsQuery安装引用

官方地址https://github.com/jamietre/CsQuery

通过Nuget管理器,搜索"CsQuery" => 点击"安装"。

相关文档VS(Visual Studio)中Nuget的使用

2、CsQuery使用代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CsQuery;
using CsQuery.Web;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using NUnit.Framework;
using Assert = NUnit.Framework.Assert;
using Description = NUnit.Framework.DescriptionAttribute;
using TestContext = Microsoft.VisualStudio.TestTools.UnitTesting.TestContext;
using System.Diagnostics;
namespace CsQuery.Tests.Examples
{
    ///<summary>
    ///     这个测试在默认情况下是禁用的,因为它访问公共web站点,激活它只是为了测试这个特性
    ///    </summary>
    [TestFixture, TestClass]
    public >YahooFinance : CsQueryTest
    {
        public override void FixtureSetUp()
        {
            base.FixtureSetUp();
            ServerConfig.Default.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2";
        }
        //[Test, TestMethod]
        public void YahooFinanceExample()
        {
            string URL = "http://finance.yahoo.com/q/op?s=MSFT&m=2012-09";
            CQ doc = CQ.CreateFromUrl(URL);
            // 这两个表有一个类“yfnc_datamodoutline1”,但是包装了一个内部表
            var rows = doc.Select(".yfnc_datamodoutline1 table tr");
           //在CsQuery中,索引器[]是用Select方法sysnoymous的
           //每个头行都有类"yfnc_tablehead1" -找出要使用哪个列
           //你感兴趣的四个部分
            var headers= rows.First().Find(".yfnc_tablehead1");
            int strikeIndex = headers.Filter(":contains('Strike')").Index();
            int symbolIndex = headers.Filter(":contains('Symbol')").Index();
            int bidIndex = headers.Filter(":contains('Bid')").Index();
            int askIndex = headers.Filter(":contains('Ask')").Index();
           //  遍历所有行,头行除外(“has”排除头行)
            foreach (var row in rows.Has("td")) {
                CQ cells = row.Cq().Find("td");
                string output = String.Format("Strike: {0} Symbol: {1} Bid: {2} ask: {3}",
                    cells[strikeIndex].Cq().Text(),
                    cells[symbolIndex].Cq().Text(),
                    cells[bidIndex].Cq().Text(),
                    cells[askIndex].Cq().Text());
           // CQ cq = CsQuery.CQ.CreateFromFile(path); 
           // string title = cq["body > div > p []"].Text();
           // string content = cq["body > div > p []"].Text();
                Console.WriteLine(output);
            }

        }
    }
}

作者提供的注意事项

CsQuery未得到积极维护。我不再在日常工作中使用它,甚至在这些日子里甚至都没有在.NET中工作!因此,我很难花时间解决问题。如果您发布问题,我可能无法回复它们,并且我不太可能修复错误。
虽然NuGet(1.3.4)上的当前版本是稳定的,但是有一些已知的错误(请参阅问题),并且自存储库中的上一版本以来有许多更改。但是,我不打算发布任何正式版本,因为我没有时间验证当前的代码库并解决已知问题,或支持新版本可能出现的任何不可预见的问题。
我欢迎任何社区参与使这个项目再次活跃起来。如果您使用CsQuery并且有兴趣成为项目的合作者,请直接与我联系。
您还应该考虑使用AngleSharp,这是一个正在积极维护的新项目。它不是替代品,但提供类似的功能。

相关文档.Net(C#) Core安装使用AngleSharp解析html的方法及示例代码


特别声明:本站部分内容收集于互联网是出于更直观传递信息的目的。该内容版权归原作者所有,并不代表本站赞同其观点和对其真实性负责。如该内容涉及任何第三方合法权利,请及时与824310991@qq.com联系,我们会及时反馈并处理完毕。