Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2019, 17:05   #1
Samyrro
 
Регистрация: 08.12.2014
Сообщений: 7
Вопрос Как извлечь все ссылки сайта внутри каталога?

Есть сайт rol-x.ru. Необходимо извлечь все внутренние ссылки внутри каталога "Объявления Житомир"
Теоретически, допустим берём 1-ю ссылку https://rol-x.ru/categories.aspx?parent=1.
Программа извлечёт все ссылки имеющиеся на странице, и далее нужно чтобы программа искала все внутренние ссылки внутри каждой до этого извлечённой ссылки, и так пока не закончатся ссылки внутри каталога "Объявления Житомир". Т.е. последней извлечённой ссылкой будет https://rol-x.ru/view_phone.aspx?phone=3207181.

Для начала использую HtmlAgilityPack для извлечения всех ссылок со страницы.
Код:
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        static string GetAbsoluteUrlString(string baseUrl, string url)
        {
            var uri = new Uri(url, UriKind.RelativeOrAbsolute);
            if (!uri.IsAbsoluteUri)
                uri = new Uri(new Uri(baseUrl), uri);
            return uri.ToString();
        }
 
 
        public static List<string> ParseLinks(string urlToCrawl)
        {
 
            WebClient webClient = new WebClient();
 
            byte[] data = webClient.DownloadData(urlToCrawl);
            string download = Encoding.ASCII.GetString(data);
 
            HashSet<string> list = new HashSet<string>();
 
            var doc = new HtmlAgilityPack.HtmlDocument();
            doc.LoadHtml(download);
            HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//a[@href]");
 
            foreach (var n in nodes)
            {
                string href = n.Attributes["href"].Value;
                list.Add(GetAbsoluteUrlString(urlToCrawl, href));
            }
            return list.ToList();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            List<string> linksToVisit = ParseLinks("https://rol-x.ru/categories.aspx?parent=1");
            using (var writer = new StreamWriter("C:/Reest.txt", append: true))
            {
                
                foreach (var line in linksToVisit)
                {
                    writer.Write(line);
                }
            }
        }
    }
}
Но как реализовать извлечение ссылок из каждой найденной до этого ссылки?
Samyrro вне форума Ответить с цитированием
Старый 28.10.2019, 15:00   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Вложенным циклом. Примерно таким принципом
Код:
foreach (var n in nodes)
            {
                string href = n.Attributes["href"].Value;
                var local_doc = new HtmlAgilityPack.HtmlDocument();
				local_doc.LoadHtml(href);
				HtmlNodeCollection local_nodes = local_doc.DocumentNode.SelectNodes("//a[@href]");
				foreach (var local_n in local_nodes)
				{
					string local_href = local_n.Attributes["href"].Value;
					list.Add(GetAbsoluteUrlString(urlToCrawl, local_href));
				}
            }
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поэтапное создание сайта (каталога) mr_tishon Помощь студентам 4 13.07.2015 18:47
Не видит русское имя каталога на странице сайта neprog2013 PHP 8 06.02.2013 14:03
Создать ссылки на файлы из заданного каталога в текущий. (С, Linux) neomax38 Помощь студентам 0 25.02.2012 10:05
Извлечь ссылки Mihail1987 Работа с сетью в Delphi 5 02.02.2011 13:59
TWebBrowser и ссылки внутри него goblinyara Компоненты Delphi 1 17.01.2009 08:59