如何在 html 敏捷包中从具有相同 class 的 html 获取所有 div
how to get all the divs from a html with the same class in html agility pack
我得到所有具有相同 class 名称的 div,但是当我将它们插入数据库并使用数据 table 处理键时,我使用查询
select top 1 ID,Link from myTable it returns all records, 说明我的代码有问题,需要用算法或者模式来提取我们需要的数据还是我们可以在从 htmldocument 中获取数据后直接访问。我拥有一个网站的所有 Html,我正在 selecting 52 个具有相同 class 的 div,但是当我 select 它们从我的数据库进入数据 table 它一次又一次地插入它们,如果我使用 Top 1 查询。它returns我所有的记录。我应该怎么办?
例如,这是我获取子类别的代码。我 selecting block 1 有与我的 div 相关的记录,也有其他 div 的数据。
.
doc.LoadHtml(Result);
HtmlNodeCollection categorynode = null;
categorynode = doc.DocumentNode.SelectNodes("//div[@class='block1']"); //| //div[@class='column even'] | //div[@class='column odd'] ");//"//div[@class='drop-menu']//a[@href]"
if (categorynode != null)
{
foreach (HtmlNode Node in categorynode)
{
string Html = Node.InnerHtml;
if (Html != null)
{
HtmlDocument Node2 = new HtmlDocument();
Node2.LoadHtml(Html);
foreach (HtmlNode subbnode in Node2.DocumentNode.SelectNodes("//div[@class='itemMenu level1']/a"))
{
string attt = subbnode.InnerText;
attt = attt.Replace("&", "&").Replace("&;", "&");
HtmlAttribute att = subbnode.Attributes["href"];
Regex r = new Regex(@"<a.*?href=(""|')(?<href>.*?)(""|').*?>(?<value>.*?)</a>");
//var regex=(new Regex(@"(?<=[\?&]id=)\d+(?=\&|\#|$)").Match(att.Value).Value);
string links = att.Value;
ModelClass _ms = new ModelClass();
_ms.link = links;
_ms.Name = attt;
_ms.CID = 0;
_ms.Type = "Sub Categories";
Controller cc = new Controller();
cc.InsertCategories(_ms);
Console.WriteLine("Sub Categories >>> " + _ms.Name);
}
}
}
我必须使用算法或树来只获取我想要的记录吗?指导我,
在你的 selection 中使用 // div 双斜杠将 select 来自整个源的 div 与你的目标同名 div 并在斜杠前使用点 .// 将仅获得当前的 div
我得到所有具有相同 class 名称的 div,但是当我将它们插入数据库并使用数据 table 处理键时,我使用查询 select top 1 ID,Link from myTable it returns all records, 说明我的代码有问题,需要用算法或者模式来提取我们需要的数据还是我们可以在从 htmldocument 中获取数据后直接访问。我拥有一个网站的所有 Html,我正在 selecting 52 个具有相同 class 的 div,但是当我 select 它们从我的数据库进入数据 table 它一次又一次地插入它们,如果我使用 Top 1 查询。它returns我所有的记录。我应该怎么办? 例如,这是我获取子类别的代码。我 selecting block 1 有与我的 div 相关的记录,也有其他 div 的数据。 .
doc.LoadHtml(Result);
HtmlNodeCollection categorynode = null;
categorynode = doc.DocumentNode.SelectNodes("//div[@class='block1']"); //| //div[@class='column even'] | //div[@class='column odd'] ");//"//div[@class='drop-menu']//a[@href]"
if (categorynode != null)
{
foreach (HtmlNode Node in categorynode)
{
string Html = Node.InnerHtml;
if (Html != null)
{
HtmlDocument Node2 = new HtmlDocument();
Node2.LoadHtml(Html);
foreach (HtmlNode subbnode in Node2.DocumentNode.SelectNodes("//div[@class='itemMenu level1']/a"))
{
string attt = subbnode.InnerText;
attt = attt.Replace("&", "&").Replace("&;", "&");
HtmlAttribute att = subbnode.Attributes["href"];
Regex r = new Regex(@"<a.*?href=(""|')(?<href>.*?)(""|').*?>(?<value>.*?)</a>");
//var regex=(new Regex(@"(?<=[\?&]id=)\d+(?=\&|\#|$)").Match(att.Value).Value);
string links = att.Value;
ModelClass _ms = new ModelClass();
_ms.link = links;
_ms.Name = attt;
_ms.CID = 0;
_ms.Type = "Sub Categories";
Controller cc = new Controller();
cc.InsertCategories(_ms);
Console.WriteLine("Sub Categories >>> " + _ms.Name);
}
}
}
我必须使用算法或树来只获取我想要的记录吗?指导我,
在你的 selection 中使用 // div 双斜杠将 select 来自整个源的 div 与你的目标同名 div 并在斜杠前使用点 .// 将仅获得当前的 div