У меня есть следующая страница, с которой я хочу получить список прокси-серверов из таблицы:
http://proxy -list.org / spanish / search.php? Search =& country = any & type = any & port = any & ssl = any
Каждая строка в таблице является элементом ul.Моя проблема заключается в получении первого элемента li, с которым связан класс "proxy" из элемента ul.Я хочу получить IP-адрес и порт, поэтому я выполняю InnerText, но поскольку у элемента li есть дочерний узел сценария, он возвращает текст узла сценария.
Ниже изображения структуры страницы:
Я попробовал приведенный ниже код с использованием Html Agility Pack и LINQ:
WebClient webClient = new WebClient();
string page = webClient.DownloadString("http://proxy-list.org/spanish/search.php?search=&country=any&type=any&port=any&ssl=any");
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(page);
List<List<string>> table = doc.DocumentNode.SelectSingleNode("//div[@class='table']")
.Descendants("ul")
.Where(ul => ul.Elements("li").Count() > 1)
.Select(ul => ul.Elements("li").Select(li =>
{
string result = string.Empty;
if (li.HasClass("proxy"))
{
HtmlNode liTmp = li.Clone();
liTmp.RemoveAllChildren();
result = liTmp.InnerText.Trim();
}
else
{
result = li.InnerText.Trim();
}
return result;
}).ToList()).ToList();
Я могу получить список, каждый элемент которого являетсясписок, содержащий поля (Proxy, País, Tipo, Velocidad, HTTPS / SSL), но поле Proxy всегда пусто.Кроме того, я не получаю вообще "País" и "Ciudad" столбцы.