C# 解析HTML-如何从标记中获取数字?
我正在开发一个与网站交互的Windows窗体应用程序 使用C# 解析HTML-如何从标记中获取数字?,c#,browser,html-parsing,C#,Browser,Html Parsing,我正在开发一个与网站交互的Windows窗体应用程序 使用WebBrowser控件,我控制着网站,我可以使用以下命令遍历标记: HtmlDocument webDoc1 = this.webBrowser1.Document; HtmlElementCollection aTags = webDoc1.GetElementsByTagName("a"); 现在,我想从下面的标签中获取一个特定的文本: 像这里一样,我想得到244这个数字,它等于上面标记中分配给的,并将它保存到一个变量中以供进一
WebBrowser
控件,我控制着网站,我可以使用以下命令遍历标记:
HtmlDocument webDoc1 = this.webBrowser1.Document;
HtmlElementCollection aTags = webDoc1.GetElementsByTagName("a");
现在,我想从下面的标签中获取一个特定的文本:
像这里一样,我想得到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);
}
}
}
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"]);
}
}
另一个选项是使用正则表达式,您可以在此处进行测试:。有关正则表达式的更多信息:
希望有帮助 如果所有情况都与此类似,并且您不介意在Windows窗体应用程序中引用System.Web
,则tou可以执行以下操作:
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);
}
}
}
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");
}
但是如何将couplete标记作为stringtry-foreach(HtmlElement-HtmlElement-in-aTags){string-aTag=HtmlElement.OuterHtml;}@Joao抱歉地说,这似乎有点复杂,是否有更简单的方法来实现这一点,除非添加一系列假设,我不会用任何其他方式来做,我可以问一下为什么您会觉得这样复杂吗?文档中的
可能有一个href
值与您作为示例给出的格式不一致。