Можете ли вы сказать мне регулярное выражение для поиска URL изображения в теге <img>в HTML с использованием кода VB .Net - PullRequest
0 голосов
/ 15 мая 2009

Я хочу извлечь ссылку на изображение с любого сайта. Я читаю информацию об источнике через webRequest. Мне нужно регулярное выражение, которое будет извлекать URL-адрес изображения из этого содержимого, т.е. значение Src в теге.

Спасибо

Ответы [ 3 ]

4 голосов
/ 12 июня 2009

Я бы порекомендовал использовать анализатор HTML для чтения html и извлечения из него тегов изображения, поскольку регулярные выражения плохо сочетаются со структурами данных, такими как xml и html.

В C #: ( из этого SO вопроса )

    var web = new HtmlWeb();
    var doc = web.Load("http://www.stackoverflow.com");

    var nodes = doc.DocumentNode.SelectNodes("//img[@src]");

    foreach (var node in nodes)
    {
            Console.WriteLine(node.src);
    }
2 голосов
/ 15 мая 2009

Попробуйте это *:

<img .*?src=["']?([^'">]+)["']?.*?>

Проверено здесь с:

<img class="test" src="/content/img/so/logo.png" alt="logo homepage">

Придает

$1 = /content/img/so/logo.png

$ 1 (вы должны навести курсор мыши на совпадение, чтобы увидеть его) соответствует части регулярного выражения между (). То, как вы получите доступ к этому значению, будет зависеть от того, какую реализацию регулярного выражения вы используете.

* Если вы хотите узнать, как это работает, оставьте комментарий

EDIT Как почти всегда с регулярным выражением, существуют крайние случаи:

<img title="src=hack" src="/content/img/so/logo.png" alt="logo homepage">

Это будет соответствовать "взломать".

1 голос
/ 15 мая 2009
/(?:\"|')[^\\x22*<>|\\\\]+?\.(?:jpg|bmp|gif|png)(?:\"|')/i 

- приличный, который я использовал раньше. Это получает любую ссылку на файл изображения в HTML-документе. Я не раздевался "или" вокруг матча, так что вам нужно будет это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...