Поэтому я пытаюсь разработать консольное приложение для веб-скребка в c#. У меня проблемы с получением ссылок на посты с этого сайта. Hacker News
Я могу получить все, кроме ссылки. Когда я пытаюсь получить ссылку, она возвращает мне ссылку для голосования, а не ссылку для публикации, хотя я полагаю, что выбираю правильные теги.
Мой код:
var postsHTML = htmlDocument.DocumentNode.Descendants("table")
.Where(node => node.GetAttributeValue("class", "")
.Equals("itemlist")).ToList();
var postList = postsHTML[0].Descendants("tr")
.Where(node => node.GetAttributeValue("class", "")
.Equals("athing")).ToList();
И затем в моем foreach l oop для доступа к элементам в массиве и для получения ссылки я ввожу это:
foreach (var post in postList)
{
Console.WriteLine("Title: " + post.Descendants("a")
.Where(node => node.GetAttributeValue("class", "")
.Equals("storylink")).FirstOrDefault().InnerText);
Console.WriteLine("URI: " + post.Descendants("a").FirstOrDefault()
.GetAttributeValue("href", ""));
Console.WriteLine();
}
Это возвращает название правильно, но мой URI, похоже, выглядит как
Название: Самые известные книги Жюля Верна были частью шедевра из 54 томов
URI: голосование? Id = 22292003 & how = up & goto = news
, и ссылка, которую я ожидаю вернуть, - это ссылка на сообщение:
URI: http://www.openculture.com/2020/02/jules-vernes-voyages-extraordinaires.html