0

我已经浪费了 2 天的时间来发现,WebBrowser 控件中存在已知的内存泄漏(自 2007 年左右以来,他们仍然没有修复它)所以我决定在这里简单地问一下,如何做我需要的事情。

到现在为止,(使用WebBrowser ...),我一直在访问一个站点,(ctrl+a),将其粘贴到一个字符串中,仅此而已。我的字符串中有网页的文本内容。工作得很好,直到我发现一段时间后它需要 1 GB 的内存。是否有可能通过 HttpWebRequest、httpwebclient 或其他任何东西来做到这一点?

感谢您的回复,没有任何这样的线程(或者我还没有找到任何线程,搜索并没有真正带我太多,因为我现在真的很生气:P)

忘记补充:我不想要 HTML 代码,我知道很容易得到它。就我而言,html 代码是无用的。我确实需要用户在使用 Internet 浏览器打开页面时看到的文本。

4

4 回答 4

7
using (WebClient client = new WebClient())
{
    string html = client.DownloadString("http://stackoverflow.com/questions/10839877/how-to-get-a-txt-content-of-a-web-page");
}
于 2012-05-31T19:21:03.570 回答
2

你可以使用这个:

string getHtml(string url) {
   HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
   request.Method = "GET";
   HttpWebResponse response = (HttpWebResponse)request.GetResponse();
   StreamReader source = new StreamReader(myWebResponse.GetResponseStream());
   string pageSourceStr = string.Empty;
   pageSourceStr= source.ReadToEnd();
   response.Close();
   return pageSourceStr;
}

您仍然需要进行一些子字符串替换以将其从 html 减少为文本。如果您只想要来自某个 div 的文本,这还不错。

于 2012-05-31T19:19:27.677 回答
2

这将从任何网页下载 html 内容。

WebClient client = new WebClient ();
string reply = client.DownloadString ("http://www.google.com");
于 2012-05-31T19:22:45.417 回答
1

为什么不使用像Ncrawler这样的免费开源 HTML抓取工具。

它是用 C# 编写的。

ncrawler.codeplex.com

您可以在此处获取有关如何使用它的示例。

于 2012-05-31T19:25:10.493 回答