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的方法及示例代码