2016-06-20 9 views
0

Ich möchte extrahieren: 51.39%, von dieser Website www.bayyinah.orgExtract Wert von HTML-Webseite mit XPath, Swift

Sie den Text nur über die Schaltfläche spenden sehen 51.39% of $6 Million

Dies ist der Code, den ich verwende um zu versuchen, diesen Wert zu bekommen.

let task = NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in 

    if error == nil { 

     let urlContent = NSString(data: data!, encoding: NSASCIIStringEncoding) as NSString! 

     do { 
      // if encoding is omitted, it defaults to NSUTF8StringEncoding 
      let doc = try HTMLDocument(string: urlContent as String, encoding: NSUTF8StringEncoding) 

      // XPath queries 
      for element in doc.xpath("//*[@id='so_far']/text()") { 
       print(element) 
      } 

     } catch let error { 
      print(error) 
     } 
    } 
}) 
task.resume() 

}

Das Ergebnis, das ich erhalte ist:

0% 

Thank you!

Antwort

1

Sie können nicht tun, was Sie allein mit XPath zu erreichen versuchen, die HTML selbst den Code enthält:

<div class="row"> 
    <div class="mil"><strong id="so_far">0%</strong> <span class="light">of $6 Million</span></div> 
</div> 

Sie können sehen, dass, wenn Sie curl https://www.bayyinah.org/

laufen scheint es, dass die Bahn -Browser, nach dem Abrufen des HTML, führt anschließend etwas JavaScript aus, das den Wert einfügt.

Allerdings, wenn Sie untersuchen, wie sie dies tun, werden Sie sehen, dass sie diesen Dienst https://www.bayyinah.org/api.php?action=get_so_far&clinet_tz=Europe%2FLondon nennen, die die folgende JSON mit Ihrer Antwort zurück:

{"total_so_far":51.498683333333} 

Also vielleicht nur ihre API verwenden?

+0

Perfekte Liebe du Mann. Nur eine Frage. Wo hast du den Service gesehen, den sie benutzen? Wenn ich inspect drücke, kann ich nicht finden, was Sie finden – AppCodah

+0

Ich habe Chrome Developer Tools verwendet, um die Netzwerkanforderungen zu überwachen, die sie erstellten. – adamretter