繁体   English   中英

下载HTML文件并将其转换为TXT

[英]Download HTML file and convert it to TXT

我正在用c#编写一个程序。 我需要知道是否有选项可以打开网站的网址并在文本中查找关键字。 例如,如果我的程序获取URL http://www.google.com和关键字“gmail”,则它将返回true。 因此,为了得出结论,我需要知道是否有办法转到URL下载HTML文件将其转换为文本,以便我可以查找我的关键字。

听起来您想要删除所有HTML标记,然后搜索生成的文本。

我的第一反应是使用正则表达式:

String result = Regex.Replace(htmlDocument, @"<[^>]*>", String.Empty);

无耻地偷走了这个: 使用C#正则表达式删除HTML标记

这表明HTML Agility Pack听起来与您正在寻找的完全一样。

在visual basic中,这有效:

Imports System
Imports System.IO
Imports System.Net

Function MakeRequest(ByVal url As String) As String
    Dim request As WebRequest = WebRequest.Create(url)
    ' If required by the server, set the credentials. '
    request.Credentials = CredentialCache.DefaultCredentials
    ' Get the response. '
    Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
    ' Get the stream containing content returned by the server. '
    Dim dataStream As Stream = response.GetResponseStream()
    ' Open the stream using a StreamReader for easy access. '
    Dim reader As New StreamReader(dataStream)
    Dim text As String = reader.ReadToEnd

    Return text
End Function

编辑:为了将来找到此页面的其他人参考,你传入一个URL,这个函数将转到页面,读取所有的html文本,并将其作为文本字符串返回。 那么你所要做的就是解析它(搜索文件中的文本),或者你可以使用流编写器将它保存到文本或html文件中。

您应该能够按原样打开HTML文件。 HTML文件是纯文本,这意味着FileStreamStreamReader应该足以读取文件。

如果你真的希望文件是.txt,你可以在下载时将文件保存为filename.txt而不是filename.html

using (WebClient client = new WebClient()) 
{
   client.DownloadFile("http://example.com", @"D:\filename.txt");
}

不要使用正则表达式来解析html,因为html对于常规表达来说相当复杂。 请查看关于SO的讨论

除了XHTML自包含标记之外,RegEx匹配开放标记

为此,请使用已实现的HTML解析器。

这是关于SO的另一个讨论,您可以在其中找到所需的链接

寻找C#HTML解析器

您也可以在互联网上搜索。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM