получая только первый & lt; li & gt; of & lt; ul & gt;

ArrayIndexOutOfBoundsException само имя объясняет, что если вы пытаетесь получить доступ к значению в индексе, который выходит за рамки размера массива, возникает такое исключение.

В вашем случае вы можете просто удалить знак равенства из цикла for.

for(int i = 0; i<name.length; i++)

Лучшим вариантом является итерация массива:

for(String i : name ) System.out.println(i);
1
задан Przemysław Cwalina 13 July 2018 в 14:18
поделиться

1 ответ

У меня был успех с этим:

string url = "https://www.eobuwie.com.pl/damskie.html";
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load(url);
var sidebar = doc.DocumentNode.SelectSingleNode("//ul[@class='sidebar-section__wrapper sidebar-section__wrapper--categories']");
var categories = sidebar.SelectNodes("li");
foreach (var category in categories)
{
    var anchor = category.SelectSingleNode("a");
    string shoeCategory = anchor.InnerText.Trim();
    Console.WriteLine(shoeCategory);
}

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

Если вам нужны ссылки, добавьте это:

string shoeCategoryLink = anchor.GetAttributeValue("href", string.Empty);
1
ответ дан Lucax 17 August 2018 в 12:49
поделиться
  • 1
    Это хорошо, и это работает, но я хотел бы взять ваш код (от строки url к категориям var) в функцию (как в моем примере). Я пытаюсь переместить его на работу, но он просто не работает. Не могли бы вы мне помочь и в этом? – Przemysław Cwalina 13 July 2018 в 14:21
  • 2
    Кажется, я не могу заставить свой код работать на меня. В методе GetCategoriesofCategories() измените петлю foreach, чтобы отобразить innerHtml в li. Является ли html все равно? – Lucax 13 July 2018 в 15:29
  • 3
    После изменения он работает одинаково. Он отображает:\n \ t \ t \ tDamskie \ t \ t & quot; & quot;\n Półbuty & quot; & Quot; \n \ т \ т \ tMęskie \ т \ т & Quot; & quot;\n Klapki i sandały ". Таким образом, он отображает первый & lt; li & gt; каждой следующей подстраницы и не отображает весь список & lt; li & gt ;. – Przemysław Cwalina 13 July 2018 в 15:38
  • 4
    Если треска не работает, избавиться от списка обуви. В program.cs пишите Crawl.GetCategories (); вот и все. Код работает, когда вы получаете Damskie и Męskie, но не работает для таких категорий, как Sandały Półbuty и т. Д. – Przemysław Cwalina 13 July 2018 в 15:44
Другие вопросы по тегам:

Похожие вопросы: