2013-03-22 2 views
0

VK.com 용 페이지 파서를 쓰고 싶습니다. 내 문제는 페이지 소스가 50 개의 결과 만 포함하고 나머지는 페이지 끝까지 다시로드된다는 것입니다. 지금까지페이지 끝까지 도달 한 페이지의 소스를 읽으십시오.

내 코드 : 페이지의

private void syncToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     string[] information, title, artist; 
     int i = 0; 
     List<string> joint = new List<string>(); 
     information = info_basic(webBrowser1.DocumentText); 
     title = info_title(information); 
     artist = info_artist(information); 
     foreach (string str in title) 
     { 
      joint.Add(artist[i] + " - " + title[i]); 
      i++; 
     } 
     listBox1.Items.Clear(); 
     listBox1.Items.AddRange(joint.ToArray()); 
    } 

    private string[] info_basic(string source) 
    { 
     string[] temps; 
     List<string> sub = new List<string>(); 
     temps = Regex.Split(source, "<div class=\"play_btn fl_l\">"); 
     foreach (string str in temps) 
     { 
      sub.Add(str); 
     } 
     sub.RemoveRange(0, 1); 
     return sub.ToArray(); 
    } 

중요 코드 :

http://csharp.bplaced.net/files/vk%20source.txt 나는 당신이 (하단 로 스크롤 할 때 vk.com에 페이지에서 트래픽을 모니터링하는 것이 좋습니다

답변

0

예를 들어, fiddler http proxy를 사용하여) 페이지가 동적으로로드되는 방법을 찾습니다. 아마 이것은 자바 스크립트에서 ajax 비동기 호출을 통해 수행됩니다. 그런 다음 코드에서 동일한 동작을 시뮬레이트하여 전체 페이지를로드합니다. HttpWebRequest 클래스는이 작업에 가장 적합합니다.

그러나 webBrowser 컨트롤을 사용하고 있기 때문에 내용을로드하는 데 필요한 모든 작업을 수행 할 수 있습니다. 웹 브라우저 컨트롤보기를 프로그래밍 방식으로 스크롤하여 기본 js가 실행되고 내용을로드하고 도달하면 중지 할 수 있습니다. 아래쪽으로 이동 한 다음로드 된 페이지 전체를 파싱합니다.

+0

감사합니다. 그러나 API를 통해 다른 방법으로이 작업을 수행했습니다. –

관련 문제