В Netbeans может оказаться полезным создать максимальный размер кучи. Перейдите к Выполнить => Установить конфигурацию проекта => Настроить . В появившемся окне Run перейдите к опции VM Option , заполните -Xms2048m -Xmx2048m
. Это может решить проблему размера кучи.
SubSonic. Сахар. Сеть. ScrapeLinks, кажется, вносит свой вклад того, что Вы хотите, однако он захватывает HTML от URL, а не от строки. Можно проверить их реализацию здесь.
Я ни о чем не знаю, встроил, и от Вашего вопроса это немного неоднозначно, что Вы ищете точно. Вы хотите весь тег привязки или просто URL от атрибута href?
Если у Вас есть правильно построенный XHtml, Вы смогли сходить с рук использование XmlReader и запроса XPath для нахождения всех тегов привязки (<a>
) и затем хит href приписывает для адреса. Так как это маловероятно, Вы - вероятно, более обеспеченное использование RegEx к выпадающему, что Вы хотите.
Используя RegEx, Вы могли сделать что-то как:
List<Uri> findUris(string message)
{
string anchorPattern = "<a[\\s]+[^>]*?href[\\s]?=[\\s\\\"\']+(?<href>.*?)[\\\"\\']+.*?>(?<fileName>[^<]+|.*?)?<\\/a>";
MatchCollection matches = Regex.Matches(message, anchorPattern, RegexOptions.IgnorePatternWhitespace | RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Compiled);
if (matches.Count > 0)
{
List<Uri> uris = new List<Uri>();
foreach (Match m in matches)
{
string url = m.Groups["url"].Value;
Uri testUri = null;
if (Uri.TryCreate(url, UriKind.RelativeOrAbsolute, out testUri))
{
uris.Add(testUri);
}
}
return uris;
}
return null;
}
Обратите внимание, что я хотел бы проверить href, чтобы удостовериться, что адрес на самом деле имеет смысл как допустимого Uri. Можно устранить это, если Вы на самом деле не собираетесь быть преследованием ссылки нигде.
Google дает мне этот модуль: http://www.majestic12.co.uk/projects/html_parser.php
Кажется, синтаксический анализатор HTML для.NET.
Я не думаю, что существует встроенная библиотека, но Пакет Гибкости HTML популярен для того, что Вы хотите сделать.
Способ сделать это с необработанной платформой.NET и никакими внешними зависимостями было бы использованием регулярное выражение для нахождения весь теги в строке. Необходимо было бы заботиться о большом количестве пограничных случаев, возможно. например, href = "http://url" по сравнению с href=http://URL и т.д.
Простое регулярное выражение -
"<a.*?>"
переданный в к Regex. Соответствия должны сделать то, в чем Вы нуждаетесь. Это regex, возможно, понадобится крошечный бит тонкой настройки, но это достаточно близко, я думаю.