Как выполнить все http-ссылки с сайта?

У меня есть задача написать программу на C#, которая находит все http-ссылки с веб-сайта. Теперь я написал для него такую ​​функцию:

async static void DownloadWebPage(string url)
{
  using (HttpClient client = new HttpClient()) 
  using (HttpResponseMessage response = await client.GetAsync(url))
  using (HttpContent content = response.Content)
  {
    string[] resArr;
    string result = await content.ReadAsStringAsync();
    resArr = result.Split(new string[] {"href"}, StringSplitOptions.RemoveEmptyEntries);//splitting

    //here must be some code-string which finds all neccessary http-links from resArr

    Console.WriteLine("Main page of " + url + " size = " + result.Length.ToString());
  }
}

Используя эту функцию, я загружаю содержимое веб-страницы в строку, затем анализирую эту строку и записываю результаты в массив, используя "href"-splitter, затем проверяю каждый элемент массива в строке, который содержит "href" substring. Я могу получить строки, которые содержат http-ссылки. Проблема начинается, когда строка разделяется, потому что невозможно найти http-ссылки, на мой взгляд, это связано с форматом содержимого этой строки. Как это исправить?

1 ответ

Решение

Однажды я сделал нечто подобное. Мое решение состояло в том, чтобы изменить HTML таким образом, чтобы он соответствовал правилам XML. (Здесь может быть проблема с этим решением, я полагаю, что мой html был каким-то образом предопределен, поэтому мне нужно было изменить только некоторые вещи, которые, как я знал, не соответствуют xml в html)

После этого вы можете просто найти "a"-узлы и прочитать параметр href.

К сожалению, я больше не могу найти свой код, это слишком давно.

Другие вопросы по тегам