从网页读取文本

时间:2011-08-31 23:33:45

标签: c# webpage

请注意:我想要阅读网页的HTML内容,而是希望从网页上阅读文字。想象一下下面的例子,如果你愿意 -

PHP脚本将“Hello User X”回传到当前页面,以便用户现在查看左上角印有“Hello User X”字样的页面(主要是空白)。从我的C#应用​​程序中,我想将文本读入字符串。

String strPageData = functionToReadPageData("http://www.myURL.com/file.php");

Console.WriteLine(strPageData); // Outputs "Hello User X" to the Console.

在VB6中,我可以使用以下API执行此操作:

  1. InternetOpen
  2. InternetOpenUrl中
  3. 的InternetReadFile
  4. InternetCloseHandle
  5. 我试图将我的VB6代码移植到C#但我没有运气 - 所以我非常感谢C#方法来完成上述任务。

4 个答案:

答案 0 :(得分:1)

您应该使用WebClient类来执行此操作。

答案 1 :(得分:1)

我不知道.NET框架的任何部分可以让您自动从HTML文件中提取所有文本。我非常怀疑它的存在。

您可以尝试使用HtmlAgilityPack(第三方)访问HTML文档中的文本元素等。

您仍然需要编写逻辑来查找正确的HTML元素。像这样的HTML页面:

<html>
     <body>Some text</body>
</html>

然后,您需要使用xpath找到body标签并阅读其内容。

HtmlNode body = doc.DocumentElement.SelectNodes("//body");
string bodyContent = body.InnerText;

按照该模式,您可以阅读页面上的每个元素。您可能需要进行一些后期处理以删除中断,评论等。

http://htmlagilitypack.codeplex.com/wikipage?title=Examples

答案 2 :(得分:1)

我知道这是一篇较老的帖子,但是我很惊讶没有人提到使用microsoft.mshtml这对于这类事情来说效果相当好。您需要添加对microsoft.mshtml

的引用

[右键点击References项目中的Solution Explorer。然后点击Add Reference...。在Assemblies中输入搜索&#39; HTML&#39;并且您会看到Microsoft.mshtml。]

然后:

using System.Net;
using mshtml;

using (var client = new WebClient())
{
    var s = client.DownloadString(@"https://stackoverflow.com/questions/7264659/read-text-from-web-page");
    var htmldoc2 = (IHTMLDocument2)new HTMLDocument();
    htmldoc2.write(s);
    var plainText = htmldoc2.body.outerText;
    Console.WriteLine(plainText);
}

将返回&#34; OuterText&#34;网页的内容,基本上是您使用网络浏览器访问时显示的文本。希望这会有所帮助。

答案 3 :(得分:0)

以下代码可能会对您有所帮助。

string result = "";
try
{
     using (StreamReader sr = new StreamReader(IOParams.ConfigPath +"SUCCESSEMPTMP.HTML"))
     {
           result = sr.ReadToEnd();
           result = result.Replace("<body/>", "<body>");
           result = result.Replace("</body>", "<body>");
           List<string> body = new List<string>(result.Split(new string[] { "<body>" }, StringSplitOptions.None));
           if (body.Count > 2)
           {
                result = body[1];
           }
      }
}
catch (Exception e)
{
    throw e;
}

return result;