2014-02-09 1 views
-1

테이블에서 텍스트를 표시하는 프로그램을 작성 중입니다. 구조가 이와 같습니다. 두 개의 테이블이 있지만 두 번째 테이블에서 텍스트를 가져 오려고합니다. enter image description herehtmlagility 팩을 사용하여 테이블의 행 항목 스크랩

내 테이블 데이터는 다음과 같습니다

enter image description here

내가 2 테이블의 각 행의 첫 번째 3 열을 표시합니다. 이렇게 해보았습니다.

HtmlWeb web = new HtmlWeb(); 

HtmlAgilityPack.HtmlDocument doc = web.Load("http://www.banglaeye.com/baby-names/index.php"); 
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//div[@class='col_box']/table[2]/tr/td"); 

try 
{ 
    foreach (HtmlNode n in nodes) 
    { 
     if (k != 0) 
     { 
      link = n.InnerHtml; 
      my_link.Add(link); 
      MessageBox.Show(link);    
     } 
     k++; 
    } 
} 
catch (NullReferenceException) 
{ 
    MessageBox.Show("No link found"); 
} 

이 URL은 http 게시 방법을 사용합니다. 그러나 Html Agility 팩은 Http post 메소드를 제공하지 않습니다. 그래서 어떻게 내 목표를 달성 할 수 있습니까 ??

답변

1

브라우저의 사용자가 "검색"버튼을 클릭 할 때까지 내용을 가져올 테이블이 채워지지 않습니다. 누군가가 정상적으로 해당 URL을 탐색 할 경우 단추를 누를 때까지 표에 항목이 표시되지 않습니다. 이것이 HTMLAgilityPack이 첫 번째 행만 보는 이유입니다. 이 버튼은 클릭하면하는 HTTP POST를 수행

letter=All&gender_id=0&origin_id=0&submit=search

프로그램이 doc.Load()보다는 doc.LoadHtml()를 사용하여 HtmlDocument에이 요청이 다음 결과를로드 수행해야합니다. 여기

당신이 두 작업을 완료하기 위해 참조 할 수 있습니다 다른 스택 오버플로 질문 있습니다

+0

내가 이것을 시도를하지만 예외를 얻었고을 보여줍니다 "링크를 찾을 수 없습니다"@hypershadsy – DarkenShooter

+1

tbody에 대해 잘못되었습니다. Chrome Dev Tools는 실제 페이지에 없더라도 암시 적으로 으로 표시됩니다. 나는 그 대답을 완전히 편집했다. – Hypershadsy

+0

그러나 Html 민첩성 팩은 HTTP 게시 기능을 제공하지 않습니다. @Hypershadsy – DarkenShooter

관련 문제