我正在用c#编写一个程序。 我需要知道是否有选项可以打开网站的网址并在文本中查找关键字。 例如,如果我的程序获取网址http://www.google.com和关键字“gmail” 它会回归真实。 因此,为了得出结论,我需要知道是否有办法转到URL下载HTML文件将其转换为文本,以便我可以查找我的关键字。
答案 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文件是纯文本,这意味着FileStream
和StreamReader
应该足以读取文件。
如果您确实希望该文件为.txt,则可以在下载时将文件保存为filename.txt
而不是filename.html
。
答案 3 :(得分:0)
不要使用正则表达式来解析html,因为html对于常规表达来说相当复杂。查看关于SO的讨论
RegEx match open tags except XHTML self-contained tags
为此目的使用已经实现的HTML解析器。
以下是关于SO的另一个讨论,您可以在其中找到所需的链接
自己在互联网上搜索。
答案 4 :(得分:0)
using (WebClient client = new WebClient())
{
client.DownloadFile("http://example.com", @"D:\filename.txt");
}