Проанализируйте ссылки HTML с помощью C#

В Netbeans может оказаться полезным создать максимальный размер кучи. Перейдите к Выполнить => Установить конфигурацию проекта => Настроить . В появившемся окне Run перейдите к опции VM Option , заполните -Xms2048m -Xmx2048m. Это может решить проблему размера кучи.

7
задан Shaun Bowe 23 September 2008 в 18:38
поделиться

5 ответов

SubSonic. Сахар. Сеть. ScrapeLinks, кажется, вносит свой вклад того, что Вы хотите, однако он захватывает HTML от URL, а не от строки. Можно проверить их реализацию здесь.

1
ответ дан 7 December 2019 в 01:28
поделиться

Я ни о чем не знаю, встроил, и от Вашего вопроса это немного неоднозначно, что Вы ищете точно. Вы хотите весь тег привязки или просто 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. Можно устранить это, если Вы на самом деле не собираетесь быть преследованием ссылки нигде.

6
ответ дан 7 December 2019 в 01:28
поделиться

Google дает мне этот модуль: http://www.majestic12.co.uk/projects/html_parser.php

Кажется, синтаксический анализатор HTML для.NET.

0
ответ дан 7 December 2019 в 01:28
поделиться

Я не думаю, что существует встроенная библиотека, но Пакет Гибкости HTML популярен для того, что Вы хотите сделать.

Способ сделать это с необработанной платформой.NET и никакими внешними зависимостями было бы использованием регулярное выражение для нахождения весь теги в строке. Необходимо было бы заботиться о большом количестве пограничных случаев, возможно. например, href = "http://url" по сравнению с href=http://URL и т.д.

5
ответ дан 7 December 2019 в 01:28
поделиться

Простое регулярное выражение -

"<a.*?>"

переданный в к Regex. Соответствия должны сделать то, в чем Вы нуждаетесь. Это regex, возможно, понадобится крошечный бит тонкой настройки, но это достаточно близко, я думаю.

-2
ответ дан 7 December 2019 в 01:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: