2017-09-11 3 views
-1

페이지 소스 대신 WebClient를 사용하여 완전히 렌더링 된 웹 페이지 HTML을 가져 오는 방법이 있습니까? 페이지의 HTML에서 일부 데이터를 긁어 내려고합니다. 나의 현재 코드는 다음과 같다 :C# asp.net WebClient를 사용하면 웹 페이지의 렌더링 된 HTML을 가져 오는 방법이 있습니까?

WebClient client = new WebClient();    
var result = client.DownloadString("https://somepageoutthere.com/"); 

//using CsQuery 
CQ dom = result; 
var someElementHtml = dom["body > main]; 
+1

페이지의 HTML에서 데이터를 긁어 내려고하는 경우 왜 필요합니까? 그것은 렌더링? –

+0

"완전히 렌더링 된 html"은 무엇을 의미합니까? –

답변

-1

를보다 효율적으로 사용 http://html-agility-pack.net

그것은 단지 당신이 요청 된 URL을 반환하는 사이트에

+0

HTML 민첩성 팩은 편리하지만 질문은 이미 소스 코드를 얻을 수 있다는 것을 의미하며 추가 데이터를 얻으려면 페이지 내의 로직을 실행해야합니다. – mason

0

웹 클라이언트를 웹 데이터와 가진 좋은 도움을 스크랩하는 모든 기능을 가지고 있습니다. 페이지 (클라이언트에서 실행되는)에서 javacript를 실행하지 않으므로 javascript가 페이지 DOM을 변경하는 경우 웹 클라이언트를 통해 해당 페이지가 표시되지 않습니다.

다른 도구를 사용하는 것이 좋습니다. 페이지에서 HTML과 자바 스크립트를 렌더링하는 것을 찾으십시오.

0

"완전히 렌더링되었습니다"라는 것이 무엇인지 모르겠지만 "모든 데이터가 아약스 호출로로드 됨"을 의미하면 대답은 아니요,이 될 수 없습니다.

초기 html 페이지에없는 데이터는 브라우저에서 javascript를 통해로드되며 WebClient는 javascript가 무엇인지 모르고 해석 할 수 없으므로 브라우저 만 수행합니다.

이러한 종류의 데이터를 얻으려면 이러한 호출을 식별해야합니다 (데이터 웹 서비스의 URL을 모르는 경우 Fiddler와 같은 도구를 사용할 수 있음). 응용 프로그램에서 시뮬레이션/재생 한 다음, 성공한 경우 응답 데이터를 얻고 데이터를 추출합니다 (데이터가 json 일 경우 쉽고 HTML 일 때는 더 까다 롭습니다)

관련 문제