Вопрос по выдаче Google и HTMLCollections

system2

Client
Регистрация
21.04.2010
Сообщения
57
Благодарностей
15
Баллы
8
Пытаюсь накрутку поведенческих сделать, но случился такой затык:

Открываю я выдачу гугла по нужной фразе
Получаю коллекцию элементов и перебираю её

Код:
HtmlElement SERPCollections = instance.ActiveTab.FindElementByAttribute("ol","id","rso","text",0);

HtmlElementCollection linksCollections = SERPCollections.FindChildrenByAttribute("h3","fulltagname","h3","regexp");

// задали 3 случайных сайта для клика, по номеру
Random rnd = new Random();
int rnd1 = rnd.Next(0, 3);
int rnd2 = rnd.Next(4, 6);
int rnd3 = rnd.Next(7, 9);

for (int i = 0; i < linksCollections.Count; i++)
    {
        HtmlElement currentlink = linksCollections.Elements[i].FindChildByAttribute("a","fulltagname","a","regexp",0);
     
        //для проверки записываю результаты в переменную
        result = result + Convert.ToString(i) + currentlink.GetAttribute("href") + Environment.NewLine;
     
        // если встретился мой сайт то заходим на него и проводим много времени, тыкаем в разные места, а также заказываем что нибудь
        if (currentlink.GetAttribute("href").Contains("наш сайт"))
        {
             //тут разные действия
            break; // наш сайт последний на который мы зашли, значит дальше кликать по случайным сайтам не надо
        }
     
        // если это не наш сайт, но значение i совпадает с тем куда надо рандомно кликнуть то кликаем и через 3 секунды закрываем сайт
     
        if (i ==rnd1 | i == rnd2 | i == rnd3)
        //if (false)
        {         
            // кликаем на сайт конкурента в поиске
            currentlink.RiseEvent("click","Full");
         
            Tab tab = instance.ActiveTab;
                     
            if (tab.IsBusy) {tab.WaitDownloading();}         
            // делаем вид что просматриваем страницу 2 секунды
            System.Threading.Thread.Sleep(2000);

         
             // пролистываем вниз, ну типа глазами пробежались
            Emulator.SendKey(tab.Handle,System.Windows.Forms.Keys.PageDown, KeyboardEvent.Down);
            System.Threading.Thread.Sleep(1000);
            Emulator.SendKey(tab.Handle,System.Windows.Forms.Keys.PageDown, KeyboardEvent.Down);
         
            //возвращаемся к поиску

            if (!tab.URL.Contains("google.com")) {tab.MainDocument.EvaluateScript("history.go(-1)");}

            if (tab.IsBusy) {tab.WaitDownloading();}

            System.Threading.Thread.Sleep(1000);

        }
     
    }


return result;
это только для одной страницы, дальше будет обработка если мой сайт не найден на странице и т.д.

Но уже сейчас проблема, после первого клика и возврата на поиск history.go(-1) куда-то девается коллекция элементов не могу понять и при попытке получить следующий htmlelement из коллекции
HtmlElement currentlink = linksCollections.Elements.FindChildByAttribute("a","fulltagname","a","regexp",0);
возвращается пустота и соответственно события currentlink.RiseEvent("click","Full"); не срабатывают и ссылки пустые currentlink.GetAttribute("href").

а если не кликать и просто вывести return коллекцию элементов currentlink.GetAttribute("href") то она вся выводиться.
 
Последнее редактирование:

daymos

Client
Регистрация
11.11.2009
Сообщения
806
Благодарностей
240
Баллы
43
как успехи?
 

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