Html-Agility-Pack은 전체 내용으로 페이지를로드하지 않습니까?

asp.net html-agility-pack html-parsing scrape web-scraping

문제

나는 웹 사이트 (스크래핑)에서 데이터를 가져 오기 위해 Html Agility Pack을 사용하고 있습니다.

내 문제는 웹 사이트에서 내가 데이터를 가져 오는 오전 몇 초 동안 페이지가로드 된 후 콘텐츠를로드하는 것입니다.

그래서 내가 특정 div에서 특정 데이터를 읽으려고 할 때마다 나에게 null을 준다.

하지만 var page 난 단지 reviewBox boxBox를 받고 있지 않습니다. 그것의 아직로드되지 않습니다.

public void FetchAllLinks(String Url)
{
    Url = "http://www.tripadvisor.com/";
    HtmlDocument page = new HtmlWeb().Load(Url);

    var link_list= page.DocumentNode.SelectNodes("//div[@class='reviewBox']");

    foreach (var link in link_list)
    {
        htmlpage.InnerHtml = link.InnerHtml;
    }
}

그래서 아무도 그 요청을 지연하는 방법을 말해 줄 수 있습니다

public void FetchAllLinks(String Url)
{
    Url = "http://www.tripadvisor.com/";
    HtmlDocument page = new HtmlWeb().Load(Url);

    var link_list= page.DocumentNode.SelectNodes("//div[@class='reviewBox']");

    foreach (var link in link_list)
    {
        htmlpage.InnerHtml = link.InnerHtml;
    }
}

page varibale에 전체 데이터를로드합니다.

인기 답변

요청을 지연시키는 것이 아닙니다. 그 노드는 DOM을 사용하는 자바 스크립트에 의해 채워지며 Html Agility Pack은 그 요구 사항에 대한 잘못된 도구입니다 (웹 엔진이 아니며 기본 HTML 만로드합니다).

내가 분석 할 수있는 완전한 웹 엔진을 필요로하는 물건에 가야 할 때, WatiN을 사용합니다. 이것은 단위 테스트가 실제 웹 페이지를 테스트 할 수 있도록 설계되었지만 주어진 브라우저 엔진을 통해 웹 페이지에 프로그래밍 방식으로 액세스 할 수 있으며 전체 문서를로드합니다. IE 나 파이어 폭스 드라이버가 기본적으로 제공되며 크롬을 사용하기가 어렵지 않다는 사실을 막연하게 상기합니다.




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