HTMLAgilityPack 모두 선택하려면 노드 선택 <img> 집단

c# html html-agility-pack regex xpath

문제

C #으로 프로젝트를 만들고 있는데, 기본적으로 이미지 검색 관련 게임의 이미지 스크레이퍼입니다. HTMLAgilityPack을 사용하여 모든 이미지 요소를 선택하고 다음과 같이 HTMLNodeCollection에 넣으려고합니다.

//set up for checking autos

HtmlNodeCollection imgs = new HtmlNodeCollection(doc.DocumentNode.ParentNode);
imgs = doc.DocumentNode.SelectNodes("//img");

foreach (HtmlNode img in imgs)
{
    HtmlAttribute src = img.Attributes["@src"];
    urls.Add(src.Value);
}

urls 는 public List 컬렉션입니다.

//set up for checking autos

HtmlNodeCollection imgs = new HtmlNodeCollection(doc.DocumentNode.ParentNode);
imgs = doc.DocumentNode.SelectNodes("//img");

foreach (HtmlNode img in imgs)
{
    HtmlAttribute src = img.Attributes["@src"];
    urls.Add(src.Value);
}

내 foreach 루프가 예외를 throw하고 있습니다.

개체 참조가 개체의 인스턴스로 설정되지 않았습니다.

자동차를 점검하는 것, 물론, imgs 는 null입니다. 이 문제의 원인을 추적 할 수있는 더 좋은 방법이 있습니까? 나는 그것이 내 Xpath인지 전혀 모릅니다.

가장 실망한 부분은 이미 작동하도록 설정했지만 파일 버전을 엉망으로 만들고 작업을 잃어 버렸습니다. Derp.

수락 된 답변

다음 행에 오타가있을 수 있습니다.

HtmlAttribute src = img.Attributes["@src"];

나는이 일을 나를 위해 일하게했다.

HtmlAttribute src = img.Attributes["@src"];

인기 답변

이것은 나를 위해 작동합니다. 귀하의 문서가 올바르게로드되지 않은 것 같아요, 따라서 xpath 일치하는 반환합니다.

HtmlDocument htmlDocument = new HtmlDocument();
htmlDocument.LoadHtml("<html><head></head><body><div><img /><div><img /><img/></div></div><img/></body></html>");

var nodes = htmlDocument.DocumentNode.SelectNodes("//img");
// 4 nodes found
foreach (var node in nodes)
{
    // do stuff
}



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