2015-01-16 3 views
0

개인 용도로 .net 프로젝트를로드하고 skyscanner.net 검색 결과 페이지를 구문 분석하려고합니다. Skyscanner에는 이러한 종류의 작업에 대한 API가 있지만 사용 가능한 무료 개인 라이센스가없는 것 같습니다.asyncronous javacript가 완료된 후 웹 페이지를로드하고 HTML을 구문 분석합니다.

Skyscanner에서 검색 프로세스를 완료하는 데 많은 시간이 필요하므로 HtmlAgilityPack을 사용하여 찾고있는 컨텐츠가없는 페이지에서 문서 결과를로드해야합니다.

WebBrowser 개체와 해당 이벤트 DocumentCompleted를 사용하려고 시도했지만 실제 검색 결과가 페이지에로드되기 전에 이벤트가 트리거 된 것처럼 보입니다.

그래서, 페이지를로드 할 수있는 방법이 있습니까? 자바 스크립트 비동기식 스크립트가 페이지를 완전히 채우고 HTML을 구문 분석 할 때까지 기다려야합니까?

+1

그래서 비동기식 아약스 호출이 발명 된 이유입니다. jQuery 나 다른 편안한 자바 스크립트 라이브러리를 사용하고 있습니까? – briosheje

+0

아니요, 저는 C# win 양식으로 만 작업하고 있습니다. –

+0

글쎄, 다음이 도움이 될 수 있습니다 : http://stackoverflow.com/questions/202481/how-to-use-httpwebrequest-net-asynchronously;) – briosheje

답변

0

당신이 개인 프로젝트 그때 PhantomJS를 조사하여 시작할 것입니다 언급 한 바와 같이 :

그 API

아마도 사이트 사본을 가져 와서 JavaScript를 실행 한 다음 최종 HTML 사본을 Html-Agility-Pack으로 가져올 수 있습니다.

정적 HTML 블록을 구문 분석하기 위해 설계되었으므로 Html-Agility-Pack을 사용하면 문제가 발생할 것이라고 생각합니다.

1

PhantomJs을 사용할 수 있습니다. 나는이 문제를 가지고 있지만 내 문제에 대한 해결책을 찾지 못했습니다. 나는 PhantomJs를 This Article에 사용하고 10 초 후에 페이지를로드합니다. 내 의견으로는, 당신의 문제점을위한 제일 해결책은 저 기사이다.