mass following na twitter

вопросы и ответы по использованию PHP
Ответить
raindi
Сообщения: 9
Зарегистрирован: 06 май 2017, 15:57

mass following na twitter

Сообщение raindi » 06 май 2017, 16:08

zdravstvuite, pitaius napisat skript dlia mass following na twitter, proshu pomoch vot sktipt

// перейти на твиттер
$browser->navigate("https://twitter.com");
// залогиниться в твиттер
if(!login_tw($str_lg_tw, $str_pass_tw))
{
debug_mess("не удалось войтив аккаунт!! скрипт закончил работу.");
$app->quit();
}
$step = 0;

$browser->navigate("https://twitter.com/LoriMoreno/followers");
for($i=1; $i<=6300; $i++){
$follows = $span->get_all_by_attribute("class","button-text follow-text",true)->elements;
foreach($follows as $follows_friends){
$follows_friends->mouse_click();
}
//$mouse->send_wheel(rand(3,7),1200,300);
$step=$step+200;
$browser->set_vertical_scroll_pos($step);
}

debug_mess("скрипт закончил работу");

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: mass following na twitter

Сообщение Support » 11 май 2017, 21:48

Что у вас не получается? И что должен делать ваш скрипт? Опишите по шагам словами, что бы можно было сопоставить с вашим кодом.

raindi
Сообщения: 9
Зарегистрирован: 06 май 2017, 15:57

Re: mass following na twitter

Сообщение raindi » 12 май 2017, 12:02

Support писал(а):Что у вас не получается? И что должен делать ваш скрипт? Опишите по шагам словами, что бы можно было сопоставить с вашим кодом.
zdravstvuite, ia xotel bi napisat skript takoba tipa "Toolkit For Twitter Chrome Extension" vot silka na https://www.youtube.com/watch?v=HIPKUBcIU-g vot sam soft https://getmyscript.com/twitter/

no u menia ne poluchaetsia

vot to chto ia delaiu

1) zaxaju na profail
2) perexaju na profail
3) sobiraiu vse elementi spam u katorix class "button-text follow-text"
4) najimaiu po ocheredna na mouse_click
5) delaiu skroling
6) povraraiu vse zanava

proshu pomoch

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: mass following na twitter

Сообщение bigfozzy » 12 май 2017, 12:24

А что не получается ? Что именно вызывает затруднение из этого ?
Нажатие на кнопки или еще что ?

raindi
Сообщения: 9
Зарегистрирован: 06 май 2017, 15:57

Re: mass following na twitter

Сообщение raindi » 12 май 2017, 15:31

bigfozzy писал(а):А что не получается ? Что именно вызывает затруднение из этого ?
Нажатие на кнопки или еще что ?
ne skrolit stranicu i skript dumaet ochen dolga a inogda vobshe ne najimaet na knopku "follow"

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: mass following na twitter

Сообщение bigfozzy » 12 май 2017, 23:57

Можно изменить скрипт так - чтобы не было зависаний :

Код: Выделить всё

$browser->set_wait_params(10,1);

// перейти на твиттер
$browser->navigate("https://twitter.com");
// залогиниться в твиттер
if(!login_tw($str_lg_tw, $str_pass_tw))
{
debug_mess("не удалось войтив аккаунт!! скрипт закончил работу.");
$app->quit();
}
$step = 0;

$browser->navigate("https://twitter.com/LoriMoreno/followers");
for($i=1; $i<=6300; $i++)
{
$follows = $span->get_all_by_attribute("class","button-text follow-text",true)->elements;
foreach($follows as $follows_friends)
{
  $follows_friends->mouse_click(5,5);
  sleep(1);
}
//$mouse->send_wheel(rand(3,7),1200,300);
$step=$step+200;
$browser->set_vertical_scroll_pos($step);
sleep(1);
}

debug_mess("скрипт закончил работу");
но вообще лучше переписать логику скрипта более правильно - много лишних команд и щелчков получается

raindi
Сообщения: 9
Зарегистрирован: 06 май 2017, 15:57

Re: mass following na twitter

Сообщение raindi » 14 май 2017, 21:11

zdravstvuite, a kak eto sdelat? kogda sktipy zakanchivaet cikl

foreach($follows as $follows_friends)
{
$follows_friends->mouse_click(5,5);
sleep(1);
}

on nachinaet s pervova elementa sdelat follow,

kak et ispravit?

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: mass following na twitter

Сообщение Support » 16 май 2017, 13:38

Надо менять логику работы скрипта. Сейчас судя по вашему коду скрипт работает так:

Код: Выделить всё

$browser->navigate("https://twitter.com/LoriMoreno/followers");
for($i=1; $i<=6300; $i++)
{
$follows = $span->get_all_by_attribute("class","button-text follow-text",true)->elements;
foreach($follows as $follows_friends)
{
  $follows_friends->mouse_click(5,5);
  sleep(1);
}
//$mouse->send_wheel(rand(3,7),1200,300);
$step=$step+200;
$browser->set_vertical_scroll_pos($step);
sleep(1);
}
1. получили все кнопки "button-text follow-text".
2. Все их прокликали.
3. Промотали скрол в результате чего подгрузились новые.
4. Опять получаем ВСЕ кнопки "button-text follow-text"
5. Начиная с первой кликаем на них
6. и так 6300 раз.

Вам нужно обратить внимание меняются ли кнопки при нажатии и может быть у них есть какой то другой атрибут что бы их получать. Либо вам надо запоминать индекс последнего нажатого и начинать новый цикл с этого индекса. НО тогда вместо цикла foreach($follows as $follows_friends) вам нужно использовать обычный for.
будет как то так:

Код: Выделить всё

$ind_start=0;

$browser->navigate("https://twitter.com/LoriMoreno/followers");
for($i=1; $i<=6300; $i++)
{
$follows = $span->get_all_by_attribute("class","button-text follow-text",true)->elements;
for($j=$ind_start; $j<count($follows); $j++)
{
   $follows[$j]->mouse_click(5,5);

  $ind_start=$j;
}

$step=$step+200;
$browser->set_vertical_scroll_pos($step);
sleep(1);
}

raindi
Сообщения: 9
Зарегистрирован: 06 май 2017, 15:57

Re: mass following na twitter

Сообщение raindi » 18 май 2017, 13:42

da vse pravilno no log fail pokazivaet pochemuta vot eta

j =24follows count25
j =24follows count25
j =24follows count25
j =24follows count25
j =24follows count25
j =24follows count25
j =24follows count25
j =24follows count25
j =24follows count43

get_all_by_attribute eta funkcia ne korektna rabotaet a inogda nujna perezagruzit sistemu a i nache skript ne zapuskaetsia/

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: mass following na twitter

Сообщение Support » 18 май 2017, 23:40

Если эта функция не работает то можно переделать использование функции

Код: Выделить всё

$follows = $span->get_all_by_attribute("class","button-text follow-text",true)->elements;
и заменить его на

Код: Выделить всё

$span->get_all_numbers_by_attribute("class","button-text follow-text",true);
get_all_numbers_by_attribute возвращает массив номеров элементов, удовлетворяющих условию поиска.

Таким образом весь наш скрипт будет выглядеть вот так:

Код: Выделить всё

$ind_start=0;

$browser->navigate("https://twitter.com/LoriMoreno/followers");
for($i=1; $i<=6300; $i++)
{
$follows = $span->get_all_numbers_by_attribute("class","button-text follow-text",true);
for($j=$ind_start; $j<count($follows); $j++)
{
   $span->get_by_number($follows[$j])->mouse_click(5,5);
   
  $ind_start=$j;
}

$step=$step+200;
$browser->set_vertical_scroll_pos($step);
sleep(1);
}
По поводу логов:

j =24follows count25
j =24follows count25
j =24follows count25
j =24follows count25
j =24follows count25
j =24follows count25
j =24follows count25
j =24follows count25
j =24follows count43

тут всё как раз таки правильно. j=24 count 25 Это j=24 значит, что для первых 25 элементов мы обработку выполнили и до тех пор пока в массиве будет 25 элементов ничего происходить не будет. так как в принципе ради этого мы и добавляли что бы он не кликал на те кнопки которые уже кликал. В массиве 25 элементов(count25), а первый элемент имеет индекс 0 соответственно последний 24(j =24). о чём вам и сообщает лог.
как только j =24follows count43 наш код должен был сработать и начать кликать по кнопкам начиная с индекса 25и заканчивая 42 элементом и т.д.

Что касается не корректной работы - скорее всего вы не обращаете внимание на утечки памяти. Для того что бы их сбрасывать нужно через какой то период вызывать функцию $app->restart и перезапускать программу вместе со скриптом. Но для этого опять таки придётся подправить логику работы скрипта. И для того что бы не кликал на те же самые кнопки записывать индекс последней нажатой кнопки в файл. При перезапуске читать индекс из этого файла и присваевать его в $ind_start.

Ответить