Как я могу разобрать все ссылки на веб-странице с WKWebView? - PullRequest
0 голосов
/ 28 октября 2018

МЕТОД 1

Я попробовал этот код:

- (void)parse
{
    [_webView evaluateJavaScript:@"document.getElementsByTagName('a')"
              completionHandler:^(id result, NSError *error){

                  if (error) {

                      NSLog(@"Error: %@", error.description);
                  }
                  else {

                      //...
                  }
              }];
}

И я получил эту ошибку:

Error Domain=WKErrorDomain Code=5 "JavaScript execution returned a result of an unsupported type" UserInfo={NSLocalizedDescription=JavaScript execution returned a result of an unsupported type}

Есть ли способполучить массив ссылок напрямую?Я думаю, что это больше, чем просто массив, возможно, сложная структура NSDictionary DOM.

МЕТОД 2

Затем я попробовал этот код:

- (void)parse
{
    int length = 0;

    [_webView evaluateJavaScript:@"document.getElementsByTagName('a').length"
              completionHandler:^(id result, NSError *error){

                  if (error) {

                      NSLog(@"Error: %@", error.description);
                  }
                  else {

                      NSString *lengthString = (NSString *)result;

                      NSLog(@"Length String: %@", lengthString);

                      __block length = (int)[lengthString intValue];
                  }
              }];

    NSLog(@"Length: %d", length);
}

И я получил это предупреждение:

Type specifier missing, defaults to 'int'

С этим журналом:

Length String: 242
Length: 0

После этого я планирую проанализировать каждую ссылку, используя этот код JS:

document.getElementsByTagName('a')[i].href

Как правильно назначить переменную длины внутри блока?

...