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

时间:2011-08-18 17:27:05

标签: c# html url

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

5 个答案:

答案 0 :(得分:2)

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

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

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

无耻地偷走了这个: Using C# regular expressions to remove HTML tags

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

答案 1 :(得分:1)

在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文件中。如果你愿意的话。

答案 2 :(得分:1)

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

如果您确实希望该文件为.txt,则可以在下载时将文件保存为filename.txt而不是filename.html

答案 3 :(得分:0)

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

RegEx match open tags except XHTML self-contained tags

为此目的使用已经实现的HTML解析器。

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

Looking for C# HTML parser

自己在互联网上搜索。

答案 4 :(得分:0)

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