2011-10-28 4 views
0

웹에서 데이터를 가져 오는 아이폰 앱을 만들고 있는데, HPPLE을 사용하여 HTML을 파싱합니다. 모두 잘 작동하지만 동일한 경우 동적으로 생성 된 요소에 액세스하는 데 문제가 있습니다. HTML 웹 페이지 .this에서 자바 스크립트 (document.write를)에 의해 내 HTML 웹 소스 page source런타임에 JavaScript로 작성된 액세스 요소

<table dir = "rtl ......."> 
<tbody> 
<script src = "get.aspx?type=js&file=ajax&rev=3"......> 
<script language = "JavaScript" src = "get.aspx?type=js&file=mc&rev=6"></script> 
<script>..</script> 
<tr>..</tr> 
<tr>..</tr> 
<tr>..</tr> 
<tr>..</tr> 
<tr>..</tr> 
<tr>..</tr> 
<tr>..</tr> 
<script>..</script> 
<tr>..</tr> 
<tr>..</tr> 
<tr>..</tr> 
내가 모든 요소 TR> 사파리 브라우저의 개발자 도구와 <을 표시하지만, 볼 수

내가 HTML 코드를 다운로드 할 때 나가 얻는 근원에는 나가 원하는 html 꼬리표가 포함한다. 나의 나쁜 영어의 sory. 그리고 나는 어느 누군가 도와 줬다.

답변

2

JavaScript 지원을 얻는 가장 간단한 해결책은 UIWebView입니다. 뷰 계층에 추가 할 필요는 없습니다. 이제 document 텍스트를 가지고

UIWebView *webView = [[UIWebView alloc] init]; 
NSString *url = @"http://www.google.com"; 
webView.delegate = self; 
frames = 0; // NSUInteger instance variable to track frame loads 
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];  

UIWebViewDelegate 방법

- (void)webViewDidStartLoad:(UIWebView *)webView { 
    frames++; 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    frames--; 
    if (frames > 0) return; 

    NSString *document = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"]; 

    // Use HPPLE to parse 
} 
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { 
    // Handle error 
} 

, 당신은이

+0

감사합니다. Jason, webViewDidFinishLoad는 어떨까요?이 메서드는 multiple이라고합니다. – NouNou

+0

이 메서드는 페이지에서 프레임 당 한 번 호출됩니다. 페이지에 프레임 세트/iframe이 없다는 것을 알고 있다면이 프레임 세트는 한 번만 호출됩니다 –

1

브라우저의 개발자 도구를 사용하여 HTML을 얻을 수 있습니다. 거기에 <html> 태그를 마우스 오른쪽 버튼으로 클릭하고 "HTML로 편집"을 선택하십시오. 이 코드를 복사하여 일부 html 파일에 붙여 넣으십시오.

부분 코드를 복사 할 수도 있습니다. 이 경우 필요한 코드 (래핑 태그)가 포함 된 특정 태그를 마우스 오른쪽 버튼으로 클릭해야합니다.

+0

thans를 HPPLE을 통과 할 수 있지만, 내가 html로 데이터를 다운로드하는 대신 복사 할 당신보다 과거 – NouNou

+0

문제가 생겼어, 친구. "wget"과 같은 도구는 당신을 도울 수 없습니다. 자바 스크립트를 다운로드하고 그 동작을 재현해야합니다. –

+0

ok Dmitriy 내가 어떻게 할 수 있는지, 나는 HTML 파싱에 익숙하지 않다. – NouNou

1

필자는 혼란을 한 번도 해본 적이 없지만 설명을 보면, javascript를 구문 분석하고 실행하는 것에 대해 아무 것도 말하지 않습니다.

Safari 브라우저 도구에 표시되는 내용은 DOM을 시각적으로 표현한 것입니다. 브라우저가 HTML에서 생성하는 것입니다. Javascript는 초기 HTML이로드 된 후이를 수정하는 데 사용할 수 있습니다.

hpple은 원본 HTML을 구문 분석하도록 설계되었지만 javascript를 사용하여 생성되는 DOM 요소는 포함하지 않습니다. 그래서 네가 거기 붙어있어. 바라건대 여기서 누군가는 자바 스크립트를 파싱 할 수있는 도구를 알고 있으므로 원하는 것을 할 수 있습니다.

+0

InvisibleBacon 정확히 내가 원하는 것입니다. 감사합니다. – NouNou

관련 문제