请注意:我不想要阅读网页的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代码移植到C#但我没有运气 - 所以我非常感谢C#方法来完成上述任务。
答案 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;
按照该模式,您可以阅读页面上的每个元素。您可能需要进行一些后期处理以删除中断,评论等。
答案 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;