[英]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文件是纯文本,这意味着FileStream
和StreamReader
应该足以读取文件。
如果你真的希望文件是.txt,你可以在下载时将文件保存为filename.txt
而不是filename.html
。
using (WebClient client = new WebClient())
{
client.DownloadFile("http://example.com", @"D:\filename.txt");
}
不要使用正则表达式来解析html,因为html对于常规表达来说相当复杂。 请查看关于SO的讨论
为此,请使用已实现的HTML解析器。
这是关于SO的另一个讨论,您可以在其中找到所需的链接
您也可以在互联网上搜索。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.