HTML-Inhalt von einem UIWebView lesen
Ist es möglich, Lesen Sie den raw-HTML-Inhalt einer web-Seite geladen wurde in ein UIWebView
?
Wenn nicht, gibt es einen anderen Weg zu ziehen reinen HTML-Inhalten von einer Webseite in der iPhone-SDK (wie ein äquivalent .NET WebClient::openRead
)?
InformationsquelleAutor der Frage Fuzzy Purple Monkey | 2009-06-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die zweite Frage ist einfacher zu beantworten. Blick auf die
stringWithContentsOfURL:encoding:error:
Methode von NSString - Sie können Sie übergeben Sie eine URL, die als eine Instanz von NSURL (die leicht instanziiert werden von NSString) und gibt einen string mit dem kompletten Inhalt der Seite an die URL. Zum Beispiel:Nachdem Sie diesen code ausführen
googlePage
enthält der HTML-Code für http://www.google.com underror
enthalten Fehler in der fetch. (Sie sollten überprüfen Sie den Inhalterror
nach dem Abruf.)Gehen den anderen Weg (aus einer UIWebView) ist ein bisschen schwieriger, aber ist im Grunde das gleiche Konzept. Sie müssen ziehen Sie den Anfrage aus der Sicht, dann tun Sie das " Abruf wie vor:
EDIT: diese Beiden Methoden nehmen einen Leistungseinbruch, jedoch, da Sie den Antrag zweimal aus. Sie können dies umgehen, indem Sie den Inhalt von aktuell geladen UIWebView mit seiner
stringByEvaluatingJavascriptFromString:
Methode, die als solche:Diese greifen, werden die aktuellen HTML-Inhalt der Ansicht mit dem Dokument-Objekt-Modell, das Parsen des JavaScript -, dann geben wir es an Sie als NSString* HTML.
Ein anderer Weg ist, um Ihre Anfrage programmgesteuert zuerst, dann laden Sie die UIWebView von dem, was Sie angefordert. Lassen Sie uns sagen, Sie nehmen das zweite Beispiel oben, wo Sie
NSString *page
als das Ergebnis eines Aufrufs zustringWithContentsOfURL:encoding:error:
. Sie können dann schieben Sie die Zeichenfolge in der web-Ansicht mitloadHTMLString:baseURL:
vorausgesetzt, dass Sie auch auf der NSURL, die Sie angefordert:Ich bin mir nicht sicher, aber wenn das ausführen von JavaScript finden Sie in der Seite, die du laden (der name der Methode,
loadHTMLString
ist etwas zweideutig, und die docs nicht viel darüber sagen).Weitere Infos:
InformationsquelleAutor der Antwort Tim
wenn Sie möchten, extrahieren Sie den Inhalt eines bereits geladenen UIWebView, -stringByEvaluatingJavaScriptFromstring. Zum Beispiel:
InformationsquelleAutor der Antwort Ben Gottlieb
Um die gesamte HTML-Rohdaten (mit
<head>
und<body>
):InformationsquelleAutor der Antwort tuoxie007
Beachten Sie, dass die NSString stringWithContentsOfURL berichten über ein völlig anderes Benutzer-agent-Zeichenfolge als die UIWebView die gleiche Anfrage. Also, wenn Ihr server Benutzer-Agenten bekannt sind, und senden verschiedene html-abhängig davon, wer danach gefragt, Sie erhalten möglicherweise nicht die richtigen Ergebnisse auf diese Weise.
Beachten Sie auch, dass die
@"document.body.innerHTML"
oben erwähnt, zeigen nur, was in den body-tag. Wenn Sie@"document.all[0].innerHTML"
erhalten Sie sowohl für Kopf und Körper. Das ist noch nicht der vollständige Inhalt der UIWebView, da wird es auch nicht wieder erhalten !doctype oder html-tags, aber es ist viel näher.InformationsquelleAutor der Antwort Pmatt
Zu Lesen:-
Ändern:-
InformationsquelleAutor der Antwort Agni
(Xcode 5 iOS 7) Universal-App z.B. für iOS 7 und Xcode 5. Es ist ein open-source-Projekt /Beispiel befindet sich hier: Link zu SimpleWebView (Projekt-Reißverschluss und Source-Code-Beispiel)
InformationsquelleAutor der Antwort Matthew Ferguson
sollten Sie versuchen, diese:
Dokument.documentElement.outerHTML
InformationsquelleAutor der Antwort schumyxp
Swift v3:
InformationsquelleAutor der Antwort Mc.Lover
Ich benutze eine swift-Erweiterung wie diese:
InformationsquelleAutor der Antwort Nathan