HtmlAgilityPack에서 스크립트 실행하기

c# html-agility-pack javascript

문제

다음과 같이 작동하는 특정 웹 페이지를 긁어 내려고합니다.

먼저 페이지가로드되면 페이지에 데이터를 가져 오는 데 필요한 일종의 자바 스크립트가 실행됩니다. 나는 그 데이터에 관심이있다.

HtmlAgilityPack으로 페이지를 가져 오는 경우 - 스크립트가 실행되지 않아 본질적으로 빈 페이지가됩니다.

스크립트를 실행하도록 강제하는 방법이 있습니까? 그래서 데이터를 가져올 수 있습니까?

수락 된 답변

웹 브라우저와 똑같은 서버가 돌아오고 있습니다. 웹 브라우저는 물론 스크립트를 실행합니다. Html 민첩성 팩은 HTML 파서 전용입니다 - 그것은 자바 스크립트를 해석하거나 문서의 내부 표현에 바인딩 할 수있는 방법이 없습니다. 스크립트를 실행하려면 웹 브라우저가 필요합니다. 문제에 대한 완벽한 해답은 완벽한 "헤드리스"웹 브라우저입니다. 이것은 HTML 파서, 자바 스크립트 인터프리터 및 브라우저 DOM을 모방 한 모델을 모두 포함하는 것으로, 모두 함께 작동합니다. 기본적으로 웹 브라우저는 렌더링 부분이없는 경우를 제외하고는 웹 브라우저입니다. 현재로서는 .NET 환경 내에서 완전히 작동하는 것은 아닙니다.

가장 좋은 방법은 WebBrowser 컨트롤을 사용하고 실제로 프로그래밍 방식으로 Internet Explorer에서 페이지를로드하고 실행하는 것입니다. 이것은 빠르거나 예쁘지는 않지만, 당신이해야 할 일을 할 것입니다.

또한 비슷한 질문에 대한 내 대답을 참조하십시오.. NET 에서 사용 가능한 기술을 설명하는 .Net 을 사용 하여 DOM로드 및 실행 자바 스크립트, 서버 측 . 조각의 대부분은 지금 존재하지만, 단지 아직 거기에 있지 않거나, 불행히도 올바른 방법으로 통합되지 않았습니다.


인기 답변

이것을 위해 Awesomium을 사용할 수 있습니다 ( http://www.awesomium.com/) . 그것은 꽤 잘 작동하지만 x64를 지원하지 않으며 스레드로부터 안전하지 않습니다. 일부 웹 사이트를 연중 무휴로 스캔하기 위해이 웹 사이트를 사용하고 있으며 최소 2 일 이상 연속으로 실행되고 있지만 일반적으로 충돌이 발생합니다.



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