Wie kann ich HTML Agility-Pack verwenden, um alle die Bilder von einer Website abgerufen werden?

StackOverflow https://stackoverflow.com/questions/2113924

  •  22-09-2019
  •  | 
  •  

Frage

Ich habe gerade heruntergeladen der HTMLAgilityPack und die Dokumentation hat keine Beispiele.

Ich bin auf der Suche nach einer Möglichkeit, alle Bilder von einer Website zum Download bereit. Die Adresse Strings, nicht das physische Bild.

<img src="blabalbalbal.jpeg" />

Ich brauche die Quelle jeden img-Tag zu ziehen. Ich will nur ein Gefühl für die Bibliothek erhalten und was es zu bieten hat. Jeder sagte, dies ist das beste Werkzeug für den Job ist.

Bearbeiten

public void GetAllImages()
    {
        WebClient x = new WebClient();
        string source = x.DownloadString(@"http://www.google.com");

        HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
        document.Load(source);

                         //I can't use the Descendants method. It doesn't appear.
        var ImageURLS = document.desc
                   .Select(e => e.GetAttributeValue("src", null))
                   .Where(s => !String.IsNullOrEmpty(s));        
    }
War es hilfreich?

Lösung

Sie können diese mithilfe von LINQ tun, wie folgt aus:

var document = new HtmlWeb().Load(url);
var urls = document.DocumentNode.Descendants("img")
                                .Select(e => e.GetAttributeValue("src", null))
                                .Where(s => !String.IsNullOrEmpty(s));

Bearbeiten : Dieser Code jetzt tatsächlich funktioniert; Ich hatte zu schreiben document.DocumentNode vergessen.

Andere Tipps

Auf der Grundlage ihres ein Beispiel, aber mit modifizierten XPath:

 HtmlDocument doc = new HtmlDocument();
 List<string> image_links = new List<string>();
 doc.Load("file.htm");
 foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//img"))
 {
    image_links.Add( link.GetAttributeValue("src", "") );
 }

Ich weiß diese Erweiterung nicht, also bin ich nicht sicher, wie man woanders das Array zu schreiben, aber das wird zumindest Sie Ihre Daten. (Auch ich definiere das Array nicht richtig, ich bin sicher. Es tut uns Leid).

Bearbeiten

Mit Ihrem Beispiel:

public void GetAllImages()
    {
        WebClient x = new WebClient();
        string source = x.DownloadString(@"http://www.google.com");

        HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
        List<string> image_links = new List<string>();
        document.Load(source);

        foreach(HtmlNode link in document.DocumentElement.SelectNodes("//img"))
        {
          image_links.Add( link.GetAttributeValue("src", "") );
       }


    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top