解析HTML - 如何从标记中获取数字?
我正在开发与Web站点交互的Windows窗体应用程序。解析HTML - 如何从标记中获取数字?
使用WebBrowser
控制我控制的网站,我可以使用通过标签迭代:
HtmlDocument webDoc1 = this.webBrowser1.Document;
HtmlElementCollection aTags = webDoc1.GetElementsByTagName("a");
现在,我想从它下面的标签的特定文本:
<a href="issue?status=-1,1,2,3,4,5,6,7&@sort=-activity&@search_text=&@dispname=Show Assigned&@filter=status,assignedto&@group=priority&@columns=id,activity,title,creator,status&assignedto=244&@pagesize=50&@startwith=0">Show Assigned</a><br>
像这里一样,我想在上面的标记中获得等于assignedto
的数字244并将其保存到变量中以供进一步使用。
我该怎么做?
您可以尝试按';'分割字符串值,然后每串用“=”这样的:
string aTag = ...;
foreach(var splitted in aTag.Split(';'))
{
if(splitted.Contains("="))
{
var leftSide = splitted.Split('=')[0];
var rightSide = splitted.Split('=')[1];
if(leftSide == "assignedto")
{
MessageBox.Show(rightSide); //It should be 244
//Or...
int num = int.Parse(rightSide);
}
}
}
另一种选择是使用的正则表达式,你可以测试在这里:www.regextester.com。和一些正则表达式的更多信息:http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.aspx
希望它有帮助!
如果所有情况与此类似,你不介意在你的Windows窗体应用程序System.Web
参考,土特产品可以做这样的事情:
using System;
public class Program
{
static void Main()
{
string href = @"issue?status=-1,1,2,3,4,5,6,7&
@sort=-activity&@search_text=&@dispname=Show Assigned&
@filter=status,assignedto&@group=priority&
@columns=id,activity,title,creator,status&assignedto=244&
@pagesize=50&@startwith=0";
href = System.Web.HttpUtility.HtmlDecode(href);
var querystring = System.Web.HttpUtility.ParseQueryString(href);
Console.WriteLine(querystring["assignedto"]);
}
}
这是一个简单的例子,首先你需要提取href
属性文本,但这不应该很复杂。拥有href
属性文本,您可以利用这基本上是查询字符串和.NET中的重用代码已经解析查询字符串。
要完成这个例子,获得href
属性文字你可以这样做:
HtmlElementCollection aTags = webBrowser.Document.GetElementsByTagName("a");
foreach (HtmlElement element in aTags)
{
string href = element.GetAttribute("href");
}
但如何让coumplete标签作为字符串 – Prachur 2011-04-07 08:56:07
尝试的foreach(HTML元素的HtmlElement在aTags){字符串ATAG = htmlElement.OuterHtml ;} – icesar 2011-04-07 09:45:54
@得到我需要从你的回答谢谢 – Prachur 2011-04-07 09:55:32