C# 在ASP.NET web应用程序中使用HTML Agility Pack时,如何连接两个节点
我正在使用agility pack进行屏幕抓取,到目前为止,我获取标题的代码是:C# 在ASP.NET web应用程序中使用HTML Agility Pack时,如何连接两个节点,c#,asp.net,html-agility-pack,C#,Asp.net,Html Agility Pack,我正在使用agility pack进行屏幕抓取,到目前为止,我获取标题的代码是: foreach (HtmlNode title in root.SelectNodes("//html//body//div//div//div[3]//div//div//div//div[3]//ul//li[1]//h4")) { string titleString = "<div class=\"show\">" + title.InnerText +
foreach (HtmlNode title in root.SelectNodes("//html//body//div//div//div[3]//div//div//div//div[3]//ul//li[1]//h4"))
{
string titleString = "<div class=\"show\">" + title.InnerText + "</div>";
shows.Add(titleString);
}
如何在标题旁边获取此值?比如:
string titleString = "<div class=\"show\">" + time.InnerText + " - " + title.InnerText + "</div>";
string titleString=“”+time.InnerText+“-”+title.InnerText+”;
首先尝试获取父节点,然后从父节点获取标题和时间戳
HtmlNodeCollection TvGuideCollection = doc.DocumentNode.SelectNodes(@"//ul[@class='results']//ul//li");
List<string> shows = new List<string>();
foreach (HtmlNode item in TvGuideCollection)
{
HtmlNode title = item.SelectSingleNode(".//a");
HtmlNode time = item.SelectSingleNode(".//span[@class='stamp']");
if (title != null && time != null)
{
string titleString = "<div class=\"show\">" + time.InnerText + " - " + title.InnerText + "</div>";
shows.Add(titleString);
}
}
HtmlNodeCollection TvGuideCollection=doc.DocumentNode.SelectNodes(@”//ul[@class='results']///ul//li”);
列表显示=新列表();
foreach(TvGuideCollection中的HtmlNode项)
{
HtmlNode title=item.SelectSingleNode(“.//a”);
HtmlNode time=item.SelectSingleNode(“.//span[@class='stamp']”);
if(title!=null&&time!=null)
{
字符串titleString=“”+time.InnerText+“-”+title.InnerText+”;
显示。添加(标题栏);
}
}
更新为仅获取今天的节目
HtmlNode TvGuideToday = doc.DocumentNode.SelectSingleNode(@"//ul[@class='results']//ul");
List<string> shows = new List<string>();
foreach (HtmlNode item in TvGuideToday.SelectNodes(".//li"))
{
HtmlNode title = item.SelectSingleNode(".//a");
HtmlNode time = item.SelectSingleNode(".//span[@class='stamp']");
if (title != null && time != null)
{
string titleString = "<div class=\"show\">" + time.InnerText + " - " + title.InnerText + "</div>";
shows.Add(titleString);
}
}
HtmlNode TvGuideToday=doc.DocumentNode.SelectSingleNode(@”//ul[@class='results']//ul”);
列表显示=新列表();
foreach(TvGuideToday.SelectNodes(“.//li”)中的HtmlNode项)
{
HtmlNode title=item.SelectSingleNode(“.//a”);
HtmlNode time=item.SelectSingleNode(“.//span[@class='stamp']”);
if(title!=null&&time!=null)
{
字符串titleString=“”+time.InnerText+“-”+title.InnerText+”;
显示。添加(标题栏);
}
}
首先尝试获取父节点,然后从父节点获取标题和时间戳
HtmlNodeCollection TvGuideCollection = doc.DocumentNode.SelectNodes(@"//ul[@class='results']//ul//li");
List<string> shows = new List<string>();
foreach (HtmlNode item in TvGuideCollection)
{
HtmlNode title = item.SelectSingleNode(".//a");
HtmlNode time = item.SelectSingleNode(".//span[@class='stamp']");
if (title != null && time != null)
{
string titleString = "<div class=\"show\">" + time.InnerText + " - " + title.InnerText + "</div>";
shows.Add(titleString);
}
}
HtmlNodeCollection TvGuideCollection=doc.DocumentNode.SelectNodes(@”//ul[@class='results']///ul//li”);
列表显示=新列表();
foreach(TvGuideCollection中的HtmlNode项)
{
HtmlNode title=item.SelectSingleNode(“.//a”);
HtmlNode time=item.SelectSingleNode(“.//span[@class='stamp']”);
if(title!=null&&time!=null)
{
字符串titleString=“”+time.InnerText+“-”+title.InnerText+”;
显示。添加(标题栏);
}
}
更新为仅获取今天的节目
HtmlNode TvGuideToday = doc.DocumentNode.SelectSingleNode(@"//ul[@class='results']//ul");
List<string> shows = new List<string>();
foreach (HtmlNode item in TvGuideToday.SelectNodes(".//li"))
{
HtmlNode title = item.SelectSingleNode(".//a");
HtmlNode time = item.SelectSingleNode(".//span[@class='stamp']");
if (title != null && time != null)
{
string titleString = "<div class=\"show\">" + time.InnerText + " - " + title.InnerText + "</div>";
shows.Add(titleString);
}
}
HtmlNode TvGuideToday=doc.DocumentNode.SelectSingleNode(@”//ul[@class='results']//ul”);
列表显示=新列表();
foreach(TvGuideToday.SelectNodes(“.//li”)中的HtmlNode项)
{
HtmlNode title=item.SelectSingleNode(“.//a”);
HtmlNode time=item.SelectSingleNode(“.//span[@class='stamp']”);
if(title!=null&&time!=null)
{
字符串titleString=“”+time.InnerText+“-”+title.InnerText+”;
显示。添加(标题栏);
}
}
Hi-Ole,我试过了,但它只获取了第一个节点,然后抛出了一个错误“SEHException was unhandled”。您是否尝试通过id或类名获取