2013-04-12 1 views
0

타사 웹 사이트에서 일부 데이터를 스크랩하는 승인을 받았습니다. 근근이 살아가는 데는 효과적이지만, 이제는 새로운 로그인 프로세스로 인해로드 블록이 발생합니다. 새로운 로그인 프로세스는 스마트 카드, 자바 및 jQuery가 혼합 된 것입니다. 내 계획은 이제 최종 목표를 달성하기 위해 WatiN과 같은 것을 사용하는 것입니다. 프로그램이 수행해야하는 작업 ...승인 된 화면 스크 레이 핑을 자동화하여 비틀어 짐

사용자가 인증서 로그온으로 이동할 수 있도록 열려있는 IE입니다. 사용자는 인증서를 사용하여 로그인합니다.

응용 프로그램은 게시 로그인 페이지로 이동하여 스크래핑을 시작합니다. WatiN을 사용하면 로그인하고 게시 로그인 페이지를 열 수 있지만 그 이후에는 많이 할 수 없습니다.

알아 두어야 할 것은 콘솔 응용 프로그램을 열고 IE를 열고 수동으로 로그인 한 다음 스크래퍼가 IE 창을 시각적으로 또는 코드에서 가져 오도록하는 방법입니다. 이상적으로 WatiN의 게시 로그인 페이지에서 쿠키와 HTML을 가져 와서 스크래핑을 시작하고 싶습니다. 스크레이퍼의 페이지 변경으로 인해 쿠키를 저장해야합니다. 쿠키를 저장하려고 할 때마다 "시간 초과로 문서가 사용 가능할 때까지 기다리는 중입니다"라는 오류 메시지가 나타납니다.

Browser browser = new IE(); 
     browser.GoTo(url); 

     browser.WaitForComplete(); //does not seem to work 
     string _html = browser.Html; 
     var cook= browser.Eval("document.cookie"); 

답변

0

방금 ​​문의하셨습니다. 늦게 알지만 다른 사람에게 도움이 될 수 있습니다. 다음을 사용하여 열려있는 Firefox 세션에 연결합니다. Firefox를 사용자가 탐색하는 데 사용하지 않고 설정이 변경 될 가능성이 적기 때문에 Firefox를 사용합니다.

Sub AttachToOrOpenNewBrowser(ByRef ff As WatiN.Core.Browser) 
    Try 
     'If Browser is open then attach to browser 
     ff = Browser.AttachTo(Of FireFox)(Find.First) 
    Catch ex As Exception 
     'Else open new Browser and attach to this NEW browser 
     ff = New FireFox(Trim(url)) 
    End Try 
End Sub 

나는이 코드를 내 코드라고 부릅니다. 그것을 호출하기 전에 ff가 "다음과 같이 이미 첨부되어있는 경우"라는 것을 확인합니다.

Sub MainWork() 
    Dim ff As WatiN.Core.Browser 
    If ff Is Nothing Then AttachToOrOpenNewBrowser(ff) 
    'Do your scrape 
End Sub