cómo extraer el título, las imágenes y la descripción de una URL mediante la utilidad Agility de HTML

asp.net c# html-agility-pack webforms

Pregunta

Quiero extraer el Título, la Descripción y las imágenes de la URL usando la utilidad Agility de HTML hasta el momento, no puedo encontrar un ejemplo que sea fácil de entender y que pueda ayudarme a hacerlo.

Agradecería que alguien me ayude con el ejemplo para poder extraer el título, la descripción y dar al usuario la opción de seleccionar una imagen de una serie de imágenes (algo similar a Facebook cuando compartimos un enlace).

Actualizado:

He colocado una etiqueta para el título, desc y un botón, cuadro de texto en la página .aspx y disparo el siguiente código en el evento de clic del botón. pero devuelve nulo para todos los valores. puede ser que estoy haciendo algo mal.

Utilicé el siguiente ejemplo de 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;
}

El código anterior me da un valor nulo para todas las variables

si modifico el codigo con esto

HtmlDocument doc = new HtmlDocument();
        var url = txtURL.Text;

        var webGet = new HtmlWeb();
         doc = webGet.Load(url);

en este caso, solo me da valor para el título y la descripción es nula de nuevo

Respuesta aceptada

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;

}



Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué