Wie man Klartext von der Reaktion der Klasse WebRequest in C#
Ich möchte zu get plain text mithilfe der WebRequest-Klasse, genau wie das, was wir bekommen, wenn wir webbrowser1.Document.Body.InnerText
. Ich habe versucht den folgenden code
public string request_Resource()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myurl);
Stream stream = request.GetResponse().GetResponseStream();
StreamReader sr = new StreamReader(stream);
WebBrowser wb = new WebBrowser();
wb.DocumentText = sr.ReadToEnd();
return wb.Document.Body.InnerText;
}
wenn ich diese ausführen, bekommen Sie eine NullReferenceException
.
Gibt es einen besseren Weg, um eine plain-text.
Hinweis: ich kann nicht verwenden webbrowser-Steuerelement direkt zum laden der Webseite, weil ich nicht wollen, um alle diese Ereignisse, dass das Feuer mehrere Male, wenn überhaupt eine Seite geladen wird.
UPDATE: ich habe meine geänderte code verwenden, die WebClient-Klasse statt WebRequest auf Vorschlag
Mein code sieht jetzt wie folgt
public string request_Resource()
{
WebClient wc = new WebClient();
wc.Proxy = null;
//The user agent header is added to avoid any possible errors
wc.Headers.Add("user-agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 ( .NET CLR 3.5.30729; .NET4.0C)");
return wc.DownloadString(myurl);
}
Ich überlege mit HTML-Dienstprogramm Pack, kann jeder jeden schlagen keine bessere alternative.
- Eine Anregung von @SLaks, ich habe HTML-Dienstprogramm Pack, kann jemand empfehlen, eine einfache Lösung ohne Verwendung von 3rd-party-Bibliotheken. Danke
- Check out diese, SO beantworten Sie die Verwendung von Html-Agility-Pack - stackoverflow.com/questions/2785092/...
- Danke Euch allen für die HTML-Dienstprogramm Pack Vorschlag, ich werde auf jeden Fall überlegen, aber bevor Sie das tun, dass kann jemand empfehlen, jede andere Möglichkeit, dies zu tun. Kommen, um den Webclient-Klasse, habe ich schon geändert mein code
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du suchst die HTML-Agility-Pack, das Parsen der HTML ohne IE.
Es hat eine
InnerText
Eigenschaft.Ihre Frage zu beantworten, müssen Sie warten, bis der browser analysiert den text.
Durch die Art und Weise, die Sie verwenden sollten, die
WebClient
Klasse stattWebRequest
.Verwenden webclient:
Dieser wird Ihnen der Inhalt der website. Dann können Sie mit HtmlAgilityPack zum analysieren das Ergebnis.
wc.DownloadString(uri)
Wenn Sie müssen einfach nur HTML-text, dann haben Sie bereits geschrieben, dass code.