Сниппет не возвращает все посты (не могу отловить ошибку)

yarchino

Client
Регистрация
05.06.2016
Сообщения
170
Благодарностей
31
Баллы
28
Нашел код на просторах интернета немного переделал под себя. Весь код состоит с нескольких частей, где то в этой есть ошибка не могу отловить. По возможности записаны комментарии. Скрипт должен на страницы вконтакте показать количество постов отвечающих требованиям. Но постоянно показывает 0. Буду очень благодарен за любые советы.
Код:
var goodElements = new List<HtmlElement>();

//собираем коллекцию всех постов
var postsCollection = instance.ActiveTab.FindElementsByAttribute("div","onclick","wall.postClick","regexp");

//проходим по каждому элементу коллекции
for (int i = 0; i < postsCollection.Count; i++)
{
    // находим ребенка , тег Div с класом wall_text
    var wallText = postsCollection.GetByNumber(i).FindChildByAttribute("div","class","wall_text","regexp",0);
    //Получаем innerhtml найденого элемента
    var innerhtml = wallText.GetAttribute("innerhtml");
        //Если из слов в скобкахесть в inerhtml прерываем цыкл и берем новый элемент
    if (innerhtml.Contains("wall_audio_rows") || innerhtml.Contains("wall.pollVote") || innerhtml.Contains("Page.showGif") )
   
    {
        continue;
    }
   
    // находин div с текстом нашего поста
    var wallPostText = postsCollection.GetByNumber(i).FindChildByAttribute("div", "class", "wall_text", "regexp", 0);
   
    //Обьявляем переменую haslinks где будет содержаться информация есть ли внешние ссылки в посте
    var hasLinks = false;
    //собираем все сылки нашего поста
    var links = wallPostText.FindChildrenByTags("a");
    //проходимся по всем сылкам
    for (int j = 0; j < links.Count ; j ++)
    {
        //Берем атрибут href
        var linkHref = links.GetByNumber(j).GetAttribute("href");
        //Если в текущем значении href есть что-то кроме хештега
        if (!linkHref.Contains("/feed?"))
        {
            hasLinks = true;
            break;
        }   
    }
    if (hasLinks)
    {
        continue;
    }
   
    goodElements.Add(postsCollection.GetByNumber(i));
}
return goodElements.Count;
 

Mr-Grey

Client
Регистрация
03.02.2016
Сообщения
88
Благодарностей
6
Баллы
8
Ну вот тебе любой совет. Освой xpath.
 

yarchino

Client
Регистрация
05.06.2016
Сообщения
170
Благодарностей
31
Баллы
28

Mr-Grey

Client
Регистрация
03.02.2016
Сообщения
88
Благодарностей
6
Баллы
8
Да, неправильно понял. Xpath имеет прямое отношение к си решеточка.
 

yarchino

Client
Регистрация
05.06.2016
Сообщения
170
Благодарностей
31
Баллы
28

yarchino

Client
Регистрация
05.06.2016
Сообщения
170
Благодарностей
31
Баллы
28
Еще поделил код на несколько частей первая часть всьо отрабатывает. Берет innerhtml. Значит ошыбка где то в фильтре по постам или в скрипте.
var goodElements = new List<HtmlElement>();

//собираем коллекцию всех постов
var postsCollection = instance.ActiveTab.FindElementsByAttribute("div","onclick","wall.postClick","regexp");

//проходим по каждому элементу коллекции
for (int i = 0; i < postsCollection.Count; i++)
{
// находим ребенка , тег Div с класом wall_text
var wallText = postsCollection.GetByNumber(i).FindChildByAttribute("div","class","wall_text","regexp",0);
return wallText.GetAttribute("innerhtml");
}
 

yarchino

Client
Регистрация
05.06.2016
Сообщения
170
Благодарностей
31
Баллы
28
Да, неправильно понял. Xpath имеет прямое отношение к си решеточка.
Было временя немножко разобрался с Xpath — это язык запросов к элементам xml или xhtml документа, также как SQL. И мою проблему можно решить с помощью нево, только зачем заново изобретать велосипед. Если и этот код должен работать (проблема либо в ошибке коде либо вконтакте поменяли алгоритм).
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Было временя немножко разобрался с Xpath — это язык запросов к элементам xml или xhtml документа, также как SQL. И мою проблему можно решить с помощью нево, только зачем заново изобретать велосипед. Если и этот код должен работать (проблема либо в ошибке коде либо вконтакте поменяли алгоритм).
ну так поправь код если там ошибка и ты догадался, что мешает
 

yarchino

Client
Регистрация
05.06.2016
Сообщения
170
Благодарностей
31
Баллы
28

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)