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 class 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 [style*='font-weight:bold']"].Text(); // string content = cq["body > div > p [style*='text-decoration:underline']"].Text(); Console.WriteLine(output); } } } }
作者提供的注意事项:
CsQuery未得到积极维护。我不再在日常工作中使用它,甚至在这些日子里甚至都没有在.NET中工作!因此,我很难花时间解决问题。如果您发布问题,我可能无法回复它们,并且我不太可能修复错误。
虽然NuGet(1.3.4)上的当前版本是稳定的,但是有一些已知的错误(请参阅问题),并且自存储库中的上一版本以来有许多更改。但是,我不打算发布任何正式版本,因为我没有时间验证当前的代码库并解决已知问题,或支持新版本可能出现的任何不可预见的问题。
我欢迎任何社区参与使这个项目再次活跃起来。如果您使用CsQuery并且有兴趣成为项目的合作者,请直接与我联系。
您还应该考虑使用AngleSharp,这是一个正在积极维护的新项目。它不是替代品,但提供类似的功能。
相关文档:.Net(C#) Core安装使用AngleSharp解析html的方法及示例代码