Разбор HTML - Как получить число из тега?
Я занимаюсь разработкой приложения для Windows Forms, которое взаимодействует с веб-сайтом.
Используя 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>
Как и здесь, я хочу получить число 244, которое равно assignedto
в приведенном выше теге и сохраните его в переменной для дальнейшего использования.
Как я могу это сделать?
2 ответа
Вы можете попробовать разбить строку на ';' значения, а затем каждая строка с '=', как это:
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);
}
}
}
Другой вариант - использовать регулярные выражения, которые вы можете проверить здесь: http://www.regextester.com/. И еще немного информации о регулярных выражениях: http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.aspx
Надеюсь, поможет!
Если все случаи похожи на это, и вы не против ссылки на System.Web
в вашем приложении Windows Forms вы можете сделать что-то вроде этого:
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");
}