comment extraire le titre, les images et la description d'une URL à l'aide de l'utilitaire HTML Agility

asp.net c# html-agility-pack webforms

Question

Je veux extraire le titre, la description et les images de l'URL à l'aide de l' utilitaire HTML Agility jusqu'à présent, je ne suis pas en mesure de trouver un exemple facile à comprendre et qui peut m'aider à le faire.

J'apprécierais que certains puissent m'aider avec des exemples afin que je puisse extraire le titre, la description et permettre à l'utilisateur de choisir une image parmi une série d'images (quelque chose de similaire à Facebook lorsque nous partageons un lien).

Actualisé:

J'ai placé une étiquette pour le titre, desc et un bouton, une zone de texte sur la page .aspx et je déclenche le code suivant sur l'événement de clic sur un bouton. mais il retourne null pour toutes les valeurs. peut-être que je fais quelque chose de mal.

J'ai utilisé l'exemple suivant 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;
}

Le code ci-dessus me donne une valeur nulle pour toutes les variables

si je modifie le code avec cette

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

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

dans ce cas, il ne m'obtient que la valeur du titre et de la description.

Réponse acceptée

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;

}



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi