C# 从url指向的页面获取数据
给定一个Url,我希望能够捕获该Url指向的页面的标题 作为其他信息-例如页面上第一段的文本片段甚至可能是页面上的图片 Digg.com在您提交url时可以很好地做到这一点 如何在.Net c#中完成类似的操作?您正在寻找的,它可以解析格式错误的HTML文档。C# 从url指向的页面获取数据,c#,asp.net,C#,Asp.net,给定一个Url,我希望能够捕获该Url指向的页面的标题 作为其他信息-例如页面上第一段的文本片段甚至可能是页面上的图片 Digg.com在您提交url时可以很好地做到这一点 如何在.Net c#中完成类似的操作?您正在寻找的,它可以解析格式错误的HTML文档。 您可以使用其HTMLWeb类通过HTTP下载网页 您还可以使用.Net通过HTTP下载文本。 但是,它不会帮助您解析HTML。您正在查找,它可以解析格式错误的HTML文档。 您可以使用其HTMLWeb类通过HTTP下载网页 您还可以使
您可以使用其
HTMLWeb
类通过HTTP下载网页
您还可以使用.Net通过HTTP下载文本。
但是,它不会帮助您解析HTML。您正在查找,它可以解析格式错误的HTML文档。
您可以使用其
HTMLWeb
类通过HTTP下载网页
您还可以使用.Net通过HTTP下载文本。
但是,它无法帮助您解析HTML。您可以尝试以下方法: 一旦有了缓冲区,您就可以处理它,查找段落或图像HTML标记以提取返回数据的部分。您可以尝试以下方法:
一旦有了缓冲区,您就可以处理它,查找段落或图像HTML标记以提取返回数据的一部分。您可以使用如下函数提取页面标题。您需要修改正则表达式以查找(比如)文本的第一段,但由于每个页面都不同,这可能会很困难。但是,您可以查找元描述标记并从中获取值
public static string GetWebPageTitle(string url)
{
// Create a request to the url
HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
// If the request wasn't an HTTP request (like a file), ignore it
if (request == null) return null;
// Use the user's credentials
request.UseDefaultCredentials = true;
// Obtain a response from the server, if there was an error, return nothing
HttpWebResponse response = null;
try { response = request.GetResponse() as HttpWebResponse; }
catch (WebException) { return null; }
// Regular expression for an HTML title
string regex = @"(?<=<title.*>)([\s\S]*)(?=</title>)";
// If the correct HTML header exists for HTML text, continue
if (new List<string>(response.Headers.AllKeys).Contains("Content-Type"))
if (response.Headers["Content-Type"].StartsWith("text/html"))
{
// Download the page
WebClient web = new WebClient();
web.UseDefaultCredentials = true;
string page = web.DownloadString(url);
// Extract the title
Regex ex = new Regex(regex, RegexOptions.IgnoreCase);
return ex.Match(page).Value.Trim();
}
// Not a valid HTML page
return null;
}
公共静态字符串getWebPagetTitle(字符串url)
{
//创建对url的请求
HttpWebRequest request=HttpWebRequest.Create(url)为HttpWebRequest;
//如果请求不是HTTP请求(如文件),请忽略它
if(request==null)返回null;
//使用用户的凭据
request.UseDefaultCredentials=true;
//从服务器获取响应,如果有错误,则不返回任何内容
HttpWebResponse响应=null;
尝试{response=request.GetResponse()作为HttpWebResponse;}
catch(WebException){returnnull;}
//HTML标题的正则表达式
string regex=@”(?您可以使用如下函数提取页面标题。您需要修改正则表达式以查找(例如)文本的第一段,但由于每个页面都不同,这可能会很困难。但是,您可以查找元描述标记并从中获取值
public static string GetWebPageTitle(string url)
{
// Create a request to the url
HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
// If the request wasn't an HTTP request (like a file), ignore it
if (request == null) return null;
// Use the user's credentials
request.UseDefaultCredentials = true;
// Obtain a response from the server, if there was an error, return nothing
HttpWebResponse response = null;
try { response = request.GetResponse() as HttpWebResponse; }
catch (WebException) { return null; }
// Regular expression for an HTML title
string regex = @"(?<=<title.*>)([\s\S]*)(?=</title>)";
// If the correct HTML header exists for HTML text, continue
if (new List<string>(response.Headers.AllKeys).Contains("Content-Type"))
if (response.Headers["Content-Type"].StartsWith("text/html"))
{
// Download the page
WebClient web = new WebClient();
web.UseDefaultCredentials = true;
string page = web.DownloadString(url);
// Extract the title
Regex ex = new Regex(regex, RegexOptions.IgnoreCase);
return ex.Match(page).Value.Trim();
}
// Not a valid HTML page
return null;
}
公共静态字符串getWebPagetTitle(字符串url)
{
//创建对url的请求
HttpWebRequest request=HttpWebRequest.Create(url)为HttpWebRequest;
//如果请求不是HTTP请求(如文件),请忽略它
if(request==null)返回null;
//使用用户的凭据
request.UseDefaultCredentials=true;
//从服务器获取响应,如果有错误,则不返回任何内容
HttpWebResponse响应=null;
尝试{response=request.GetResponse()作为HttpWebResponse;}
catch(WebException){returnnull;}
//HTML标题的正则表达式
字符串regex=@”(?您可以使用Selenium RC(开源,www.seleniumhq.org)解析页面中的数据等。它是一个带有C#.Net库的web测试自动化工具
Selenium有完整的API来读取html页面上的特定项目。您可以使用Selenium RC(开源,www.seleniumhq.org)来解析页面中的数据等。它是一个带有C#.Net库的web测试自动化工具
Selenium有完整的API来读取html页面上的特定项目