C# 如何使用HTML Agility实用程序提取url的标题、图像和描述

C# 如何使用HTML Agility实用程序提取url的标题、图像和描述,c#,asp.net,webforms,html-agility-pack,C#,Asp.net,Webforms,Html Agility Pack,我想提取标题,描述和图片从网址使用到目前为止,我无法找到一个例子,这是很容易理解,可以帮助我做到这一点 如果有人能帮我举个例子,我将不胜感激,这样我就可以提取标题、描述,并让用户选择从一系列图片中选择图片。当我们共享链接时,这些图片与Facebook类似 更新: 我在.aspx页面上为title、desc和按钮、文本框放置了一个标签&我在按钮单击事件上触发了以下代码。但对于所有值,它都返回null。可能是我做错了什么 我使用了以下示例URLhttp://edition.cnn.com/2012/

我想提取标题,描述和图片从网址使用到目前为止,我无法找到一个例子,这是很容易理解,可以帮助我做到这一点

如果有人能帮我举个例子,我将不胜感激,这样我就可以提取标题、描述,并让用户选择从一系列图片中选择图片。当我们共享链接时,这些图片与Facebook类似

更新:

我在.aspx页面上为title、desc和按钮、文本框放置了一个标签&我在按钮单击事件上触发了以下代码。但对于所有值,它都返回null。可能是我做错了什么

我使用了以下示例URLhttp://edition.cnn.com/2012/10/31/world/asia/india/index.html?hpt=hp_t2

protected void btnGetURLDetails_Click(object sender, EventArgs e)
{
    HtmlDocument doc = new HtmlDocument();
    var response = txtURL.Text;
    doc.LoadHtml(response);

    String title = (from x in doc.DocumentNode.Descendants()
                    where x.Name.ToLower() == "title"
                    select x.InnerText).FirstOrDefault();

    String desc = (from x in doc.DocumentNode.Descendants()
                   where x.Name.ToLower() == "description"
                   select x.InnerText).FirstOrDefault();

    List<String> imgs = (from x in doc.DocumentNode.Descendants()
                         where x.Name.ToLower() == "img"
                         select x.Attributes["src"].Value).ToList<String>();

    lblTitle.Text = title;
    lblDescription.Text = desc;
}
在这种情况下,title&description的“仅获取我”值再次为空

protected void btnGetURLDetails_Click(object sender, EventArgs e)
{
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(txtURL.Text));
    request.Method = WebRequestMethods.Http.Get;

    HttpWebResponse response = (HttpWebResponse)request.GetResponse();

    StreamReader reader = new StreamReader(response.GetResponseStream());

    String responseString = reader.ReadToEnd();

    response.Close();

    HtmlDocument doc = new HtmlDocument();
    doc.LoadHtml(responseString);

    String title = (from x in doc.DocumentNode.Descendants()
                where x.Name.ToLower() == "title"
                select x.InnerText).FirstOrDefault();

    String desc = (from x in doc.DocumentNode.Descendants()
               where x.Name.ToLower() == "meta"
               && x.Attributes["name"] != null
               && x.Attributes["name"].Value.ToLower() == "description"
               select x.Attributes["content"].Value).FirstOrDefault();

    List<String> imgs = (from x in doc.DocumentNode.Descendants()
                     where x.Name.ToLower() == "img"
                     select x.Attributes["src"].Value).ToList<String>();

   lblTitle.Text = title;
   lblDescription.Text = desc;

}

我必须设计一个页面,管理员将在其中添加URL,然后代码应在页面URL上显示标题、说明和图像。我不能给你HTML,因为它是基于URL的。你可以使用任何URL,例如任何网站上也有图片的新闻或文章。这可能对你好,Danilo,谢谢,我已经用你的解决方案更新了我的问题,但我无法将其作为标题、描述的值。。对于任何URL都为空。您需要发出HttpWebRequest以获取所需URL的响应。我改变了主意answer@Danila,我能够使它工作,但问题是它确实返回null的描述我尝试了事件与您的新代码相同的结果。我使用以下代码获得满足描述,但问题是它区分大小写。说明不同于说明`HtmlNode node=doc.DocumentNode。请选择SingleNode//meta[@name='Description'];//descriptioncase-sensitive变量desc2=;如果节点!=null{desc2=node.GetAttributeValuecontent;//TODO:write desc somewhere}`您确定响应包含描述标记吗?正如您从代码中看到的,这里有ToLower方法调用,这就是为什么描述是小写的
protected void btnGetURLDetails_Click(object sender, EventArgs e)
{
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(txtURL.Text));
    request.Method = WebRequestMethods.Http.Get;

    HttpWebResponse response = (HttpWebResponse)request.GetResponse();

    StreamReader reader = new StreamReader(response.GetResponseStream());

    String responseString = reader.ReadToEnd();

    response.Close();

    HtmlDocument doc = new HtmlDocument();
    doc.LoadHtml(responseString);

    String title = (from x in doc.DocumentNode.Descendants()
                where x.Name.ToLower() == "title"
                select x.InnerText).FirstOrDefault();

    String desc = (from x in doc.DocumentNode.Descendants()
               where x.Name.ToLower() == "meta"
               && x.Attributes["name"] != null
               && x.Attributes["name"].Value.ToLower() == "description"
               select x.Attributes["content"].Value).FirstOrDefault();

    List<String> imgs = (from x in doc.DocumentNode.Descendants()
                     where x.Name.ToLower() == "img"
                     select x.Attributes["src"].Value).ToList<String>();

   lblTitle.Text = title;
   lblDescription.Text = desc;