C# 在ASP.NET web应用程序中使用HTML 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 +

我正在使用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 + "</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或类名获取
  • ?你能提供一些源代码或你正在抓取的网站的url吗?我正试图从感谢Ole那里获得时间和标题,它很有效!不过有一件事,我只想知道今天的情况。在上面的代码中,我在h4标记之前有li[1],但现在似乎无法得到它,有什么想法吗?嗨,Ole,我试过了,但它只得到了第一个节点,然后抛出了一个错误“SEHException was unhandled”你试过通过id或类名获得
  • ?你能提供一些源代码或你正在抓取的网站的url吗?我正试图从感谢Ole那里获得时间和标题,它很有效!不过有一件事,我只想知道今天的情况。在上面的代码中,我在h4标记之前有li[1],但现在似乎无法得到它,有什么想法吗?