在使用C#开发QQLite插件过程中,需要从第三方获取数据,通常都是选择json等,但是这次由于数据由第三方提供,由不得商量,对方返回的Html,需要自己从html 中提取出需要的数据,然后使用。
解析Html 通常可用的第三方库有:htmlagilitypack 和 这个CsQuery ,但是前面一个看了几遍,一直没搞懂怎么用的,后来就选择了 CsQuery这个第三方库,这个CsQuery 的缺点是:目前维护不积极。
下面都是以CsQuery 为例进行说明,主要就是参考github 的文档,主要步骤就是:
(1)加载需要解析的Html
(2)使用class Id 或者 标签 从 html 中选取出可以目的数据部分
下面是简单的示例代码:
使用C# 创建的控制台应用,对应的1.html的结构为: http://caipiao.163.com/award/cqssc/20160713.html
var dom = CsQuery.CQ.CreateFromFile("1.html");
int sum = dom["[data-win-number]"].Length;
string max_phase = "0";
string max_win_num = "0";
if (sum == 0)
{
max_phase = "0";
max_win_num = "0";
}
else {
Dictionary<string, string> dict = new Dictionary<string, string>();
int i = 0;
for (i = 0; i < sum; i++)
{
CsQuery.IDomObject object1 = dom["[data-win-number]"][i];
dict.Add(object1.GetAttribute("data-period"), object1.GetAttribute("data-win-number"));
}
var dicSort = from objDic in dict orderby objDic.Key select objDic;
int index = 0;
foreach (KeyValuePair<string, string> kvp in dicSort)
{
if (index == sum - 1)
{
max_phase = kvp.Key;
max_win_num = kvp.Value.Replace(" ", "").ToString();
}
index++;
}
}
Console.WriteLine(max_phase);
Console.WriteLine(max_win_num);