HTML Agility Pack을 사용하여 웹 사이트에서 모든 이미지를 검색하려면 어떻게해야합니까?

c# html-agility-pack parsing

문제

방금 HTMLAgilityPack을 다운로드했으며 설명서에 예제가 없습니다.

웹 사이트에서 모든 이미지를 다운로드 할 수있는 방법을 찾고 있습니다. 물리적 인 이미지가 아닌 주소 문자열.

<img src="blabalbalbal.jpeg" />

각 img 태그의 소스를 가져와야합니다. 나는 도서관에 대한 느낌과 그것이 제공 할 수있는 것을 얻고 싶다. 모두는 이것이이 직업을위한 최고의 도구라고 말했습니다.

편집하다

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));        
    }

수락 된 답변

다음과 같이 LINQ를 사용하여이 작업을 수행 할 수 있습니다.

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

편집 :이 코드는 이제 실제로 작동; 나는 document.DocumentNode 를 쓰는 것을 잊었다.


인기 답변

한 가지 예를 기반으로하지만 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", "") );
 }

이 확장 기능을 모르므로 배열을 다른 곳에 작성하는 방법을 모르겠지만 최소한 데이터를 가져올 것입니다. (또한 배열을 올바르게 정의하지는 않습니다. 죄송합니다.)

편집하다

예제 사용 :

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", "") );
       }


    }



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.