c# Как быстро найти ссылки на сайте?

Как найти ссылки на сайте?

Сегодня на простом примере я хочу показать Вам, как можно быстро найти ссылки на сайте с помощью элемента управления WebBrowser. И так сначала создадим небольшое Windows Forms приложение, а затем добавим на форму: control WebBrowser, либо вместо него Вы можете использовать одноименный класс, а так же кнопку и listBox, в который будем выводить все найденный ссылки. После чего создадим простую html страницу.

html страница

А затем добавим и выполним следующий код:

private void button1_Click(object sender, EventArgs e)
{
 webBrowser1.Navigate(URL);
}
private void webBrowser1_DocumentCompleted(object sender, 
WebBrowserDocumentCompletedEventArgs e)
{
//получаем все ссылки
HtmlElementCollection links = webBrowser1.Document.Links;
}

Сначала с помощью метода Navigate мы получаем содержимое страницы, затем дожидаемся полной загрузки страницы, подписавшись на событие DocumentCompleted. После чего с помощью свойства Links, находим все ссылки на сайте.

Осталось убедиться, в том, что мы действительно нашли ссылки и выше написанный код работает верно. Для этого поместим содержимое коллекции в элемент управления listBox.

foreach (HtmlElement link in links)
{
listBox1.Items.Add(link.OuterHtml); 
}

В результате получаем следующий результат:

найденные ссылки

Читайте также:

8 комментариев

  1. Николай says:

    Ошибка «WebKit.DOM.Document» не содержит определения для «links» и не был найден метод расширения «links», принимающий тип «WebKit.DOM.Document» в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку)
    в чем проблема?
    HtmlElementCollection links = webKitBrowser1.Document.links;
    Подчеркивает links.

  2. Свойство Links должно быть с большой буквы, так как c# регистрозависимый язык но, судя по названию “webKitBrowser1” Вы используете стороннюю библиотеку, а не System.Windows.Forms.WebBrowser, поэтому, возможно у Вас просто нет такого свойства.

  3. Владимир says:

    Да пытаюсь делать все то же самое, куча ошибок вылезает. В статье все так просто расписано, а на деле непонятно. Уже вначале написано «а затем добавим на форму: control WebBrowser, либо вместо него Вы можете использовать одноименный класс». одноименный класс? впервые слышу. Не знаю, как его создать. Хотя вроде статья есть про control WebBrowser. Потом, создадим простую html страницу. Если это через простой блокнот создавать, то нашел как. Если нет, то не знаю как. «А затем добавим и выполним следующий код:» Куда добавить? В кнопку? Вместо кнопки? Или как? А это «Сначала с помощью метода Navigate мы получаем содержимое страницы, затем дожидаемся полной загрузки страницы, подписавшись на событие DocumentCompleted. После чего с помощью свойства Links, находим все ссылки на сайте.» это только для «своих», как говорится. Пытался разобраться через ваши статьи, мало, чего понял.

  4. Спасибо за комментарий.

    Одноименный класс (класс WebBrowser) — это возможность обойтись без контрола на форме и выполнить все те же самые действия: Пример работы с классом WebBrowser

  5. Владимир says:

    А какие этот вариант ссылки ищет? У меня подозрения, что только те, что есть на главной странице. Мне важно найти все ссылки, помимо главной. Скрытые, неиндексированные и т.д. Как бы, ссылка была, но на сайте нет поисковика. И переходить по сайту неудобно, потому что просто на нее не зайти, надо знать саму ссылку. Что-то все новые visual studio не хотят работать, требуют установки outputpath и assemblyname.

  6. Найдет все ссылки (подразумевается html элемент с тегами: <a>&#8230;</a>) на загруженной в WebBrowser странице.

    Если загружена главная страница, то найдет ссылки только на ней? Да.

    Все ссылки найти на всех страницах &#8212; это нужно просто пробежать по всем страницам сайта, например с помощью цикла.

  7. Владимир says:

    Но опять же, цикл пробежится по страницам с главной. В общем, он будет искать последовательно. То, что мне надо, нельзя откуда-то перейти, только знать ссылку. Не буду &#171;ходить вокруг да около&#187;. Сайт [внешняя ссылка] Ссылка, что я помню [внешняя ссылка]. Получается, этим методом ее не найти. Есть и другие ссылки, что хочу найти, но надо знать ссылку. Пока я не понимаю, как можно реализовать подобное. В Интернете никто не знает&#8230;

  8. &#171;То, что мне надо, нельзя откуда-то перейти, только знать ссылку&#187;

    Если ссылка доступна только кому-то, то найти её вряд ли можно. Как вариант попробовать воспользоваться сторонними сервисами для поиска ссылок на сайте (их сейчас куча в инете). Ещё можно посмотреть карту сайта, есть практически у любого сайта, возможно там такая ссылка отображается.

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*