Как выполнить все 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.
К сожалению, я больше не могу найти свой код, это слишком давно.