html 애자 팩을 사용하여 HTML에서 이미지 URL을 추출하고 xml 파일에 작성

c# html-agility-pack xml

문제

나는 C #에 익숙하지 않고 다음과 같은 문제에 정말로 도움이 필요하다. 특정 패턴을 가진 웹 페이지에서 사진 URL을 추출하고 싶습니다. 예를 들어, 다음 패턴 name_412s.jpg가있는 모든 이미지를 추출하고 싶습니다. html에서 이미지를 추출하는 데 다음 코드를 사용하지만이를 적용하는 방법을 알려주지 않습니다.

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

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

        foreach(HtmlNode link in document.DocumentElement.SelectNodes("//img")
        {
          images[] = link["src"];
       }
}

결과를 XML 파일로 작성해야합니다. 그걸 도와 주실 수 있습니까?

고맙습니다 !

수락 된 답변

쿼리 결과를 제한하려면 XPath에 조건을 추가해야합니다. 예를 들어 //img[contains(@src, 'name_412s.jpg')] 는 해당 파일 이름을 포함하는 src 특성을 갖는 img 요소 만 결과로 제한합니다.

XML에 결과를 작성하는 경우 새 XML 문서를 만든 다음 일치하는 요소를 XML 문서에 복사해야합니다. HtmlAgilityPack 노드를 XmlDocument로 직접 가져올 수 없으므로 모든 특성을 수동으로 복사해야합니다. 예를 들면 :

using System.Net;
using System.Xml;

// ...

public void Images()
{
    WebClient x = new WebClient();
    string source = x.DownloadString(@"http://www.google.com");
    HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
    document.Load(source);
    XmlDocument output = new XmlDocument();
    XmlElement imgElements = output.CreateElement("ImgElements");
    output.AppendChild(imgElements);
    foreach(HtmlNode link in document.DocumentElement.SelectNodes("//img[contains(@src, '_412s.jpg')]")
    {
        XmlElement img = output.CreateElement(link.Name);
        foreach(HtmlAttribute a in link.Attributes)
        {
            img.SetAttribute(a.Name, a.Value)
        }
        imgElements.AppendChild(img);
    }
    output.Save(@"C:\test.xml");
}



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