HtmlAgilityPack을 사용하여 동적으로로드 된 콘텐츠를 얻는 방법

c# html-agility-pack

문제

HtmlAgilityPack을 사용하여 중앙 은행에서 일부 HTML을 추출하려고했습니다.

여기 주간 계정이 있습니다. "방글라데시 은행 명령 1972 .....에 따른 계좌"에는 "A. 금화와 금괴"라는 행이 들어 있습니다.

나는 다음 코드를 시도했다.

var get = new HtmlWeb();
for (int i = 1; i < 8284; i++)
{
    var dat = get.Load("https://www.bb.org.bd/pub/weekly/staffair/state_affairs.php?prId=" + i);
    var htm = dat.DocumentNode.InnerHtml;
    if (htm.Contains("Gold Coin and Bullion"))
    {
       File.WriteAllText(@"C:\Test\" + i + ".txt", htm);
       Console.WriteLine(i + " written");
    }
}

페이지를 마우스 오른쪽 버튼으로 클릭하고 "소스보기"를 클릭하면 "A. 금화와 금괴"라는 줄이 보이지 않습니다. dat.DocumentNode.InnerHtml 은 결과와 동일한 결과를 반환합니다. 테스트 폴더에 파일이 기록되지 않습니다. 그러나 "소스보기"대신 "요소 검사"를 클릭하면 모든 정보를 볼 수 있습니다.

HtmlAgilityPack을 사용하여 해당 라인을 얻는 방법?

수락 된 답변

소스에서 볼 수없는 이유는 찾고있는 데이터가 페이지를 처음 다운로드 한 후 브라우저에서 javascript (xhr)를 통해로드되기 때문입니다. HtmlAgiligyPack은 HTML 구문 분석기이므로 자바 스크립트 실행 및 추가 리소스로드를 지원하지 않습니다. 이 작업을 수행하는 다른 방법이 있지만 다른 도구를 사용해야합니다. 다음은 시작하기에 적합한 장소입니다.

DOM을로드하고 .Net을 사용하여 서버 측에서 javascript를 실행합니다.



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