C# 从网页中读取文本
请注意:我不想阅读网页的HTML内容,而是想阅读网页上的文本。想象一下下面的例子,如果你愿意的话- 一个PHP脚本将“Hello User X”回显到当前页面上,因此用户现在正在查看一个页面(主要为空白),页面左上角印有“Hello User X”字样。从我的C#应用程序中,我想将文本读入字符串C# 从网页中读取文本,c#,webpage,C#,Webpage,请注意:我不想阅读网页的HTML内容,而是想阅读网页上的文本。想象一下下面的例子,如果你愿意的话- 一个PHP脚本将“Hello User X”回显到当前页面上,因此用户现在正在查看一个页面(主要为空白),页面左上角印有“Hello User X”字样。从我的C#应用程序中,我想将文本读入字符串 String strPageData = functionToReadPageData("http://www.myURL.com/file.php"); Console.WriteLine(strP
String strPageData = functionToReadPageData("http://www.myURL.com/file.php");
Console.WriteLine(strPageData); // Outputs "Hello User X" to the Console.
在VB6中,我可以通过使用以下API实现这一点:
我试图将我的VB6代码移植到C#,但我运气不好-因此我非常感谢使用C#方法来完成上述任务。您应该使用WebClient类来完成此操作。我不知道.NET framework中有任何部分可以让您自动从HTML文件中提取所有文本。我非常怀疑它的存在 您可以尝试使用HtmlAgilityPack(第三方)访问HTML文档中的文本元素等 不过,您仍然需要编写逻辑来找到正确的HTML元素。类似以下内容的HTML页面:
<html>
<body>Some text</body>
</html>
按照这种模式,您可以读取页面上的每个元素。您可能需要进行一些后期处理以删除中断、注释等
下面的代码可能会对您有所帮助
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;
字符串结果=”;
尝试
{
使用(StreamReader sr=new StreamReader(IOParams.ConfigPath+“successmptmp.HTML”))
{
结果=sr.ReadToEnd();
结果=结果。替换(“,”);
结果=结果。替换(“,”);
列表体=新列表(result.Split(新字符串[]{”“},StringSplitOptions.None));
如果(body.Count>2)
{
结果=正文[1];
}
}
}
捕获(例外e)
{
投掷e;
}
返回结果;
我知道这是一篇比较老的帖子,但我很惊讶没有人提到使用microsoft.mshtml
,这对这类东西来说相当有效。您需要添加对microsoft.mshtml
[右键单击解决方案资源管理器中项目中的引用
。然后单击添加引用…
。在程序集中键入搜索“HTML”,您将看到Microsoft.mshtml
]
然后:
它将返回网页的“OuterText”,这基本上是使用web浏览器访问网页时显示的文本。希望这能有所帮助。我不久前已经签出了这个类,但我只能阅读HTML,而不能阅读页面上的实际文本。你知道我做错了什么吗?+1。使用WebClient类并使用HTML解析器去除文本。如果您不想使用html解析器或正则表达式,可以保存html并使用IE或Safari使用javascript获取纯文本,例如:document.body.innerText如何定义文本?链接文本也是文本的一部分吗?还是仅包含在或标记中的字符串?按钮标签文本呢?@Phillip看这里:我只想返回“hah-mmm hdhd JKD 0 0”。请不要在你的问题前面加上“C#”之类的前缀。你已经用过标签了。这让我很困惑,我不知道如何让它正常工作。不过我会坚持下去,如果我能找到工作,我会告诉你的。。。不过,我宁愿不必为HTML费心。我现在将使用这种方法。非常感谢。
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;
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);
}