Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Андрэич
2836 / 768 / 41
Регистрация: 20.05.2012
Сообщений: 2,056
1

Кнопка на сайте

19.04.2016, 08:28. Просмотров 653. Ответов 17
Метки нет (Все метки)

Здравствуйте! Не знаю, угадал ли с веткой форума...

Как программно нажимать кнопку Больше номеров на странице: https://msk.shop.tele2.ru
(пока надпись на ней не поменяется на Закончились)???

Заранее огромное спасибо!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2016, 08:28
Ответы с готовыми решениями:

Кнопка увеличения масштаба на сайте HTML, CSS, JS
Есть сайт, на который нужно добавить кнопку, при нажатии на которую...

Как сделать, чтобы кнопка на сайте была недоступна 60 секунд?
У меня на сайте на странице регистрации выведены правила, а в конце кнопки:...

Сделать так, чтобы кнопка появлялась на сайте только в определенное время и исчезала после нажатия на неё
помогите с решением то кой проблемы на сайте есть кнопка при помощь которой...

Кнопка на сайте
Есть сайт http://bmhostel.ru/, там есть рамка "забронируйте номер прямо...

Кнопка на сайте
Есть сайт http://bmhostel.ru/, там есть рамка "забронируйте номер прямо...

17
Kraken73
104 / 92 / 50
Регистрация: 17.09.2015
Сообщений: 594
19.04.2016, 09:23 2
Это в раздел JS надо
1
Андрэич
2836 / 768 / 41
Регистрация: 20.05.2012
Сообщений: 2,056
23.04.2016, 01:11  [ТС] 3
Цитата Сообщение от Kraken73 Посмотреть сообщение
Это в раздел JS надо
Java Script? Может, и VBS тогда можно обойтись?
0
diargon3454
18 / 18 / 4
Регистрация: 30.09.2013
Сообщений: 519
23.04.2016, 13:28 4
Нет это тебе надо в раздел, ajax, mysql и php (ну не обязательно его)
1
Андрэич
2836 / 768 / 41
Регистрация: 20.05.2012
Сообщений: 2,056
25.04.2016, 12:39  [ТС] 5
Спсб!

Я так понимаю, нужно сначала нам выяснить платформу (движок), на чём там написано, туда потом и обращаться...
0
Андрэич
2836 / 768 / 41
Регистрация: 20.05.2012
Сообщений: 2,056
04.05.2016, 01:43  [ТС] 6
Вобщем, попробовал разобраться, но воз и ныне там...

1) Попробовал найти функции с параметрами на Яве, чтобы включить в адресную строку. В принципе, можно зациклить и те параметры, которые там уже есть, но будет долго... Со скриптовой Явой пока не разобрался... Есть там такая иерархия:
HTML5
1
2
3
4
5
6
7
8
9
10
    <div class="numbers-list-bott" data-bind="visible: CanShowMore">
        <div class="show-more" style="display: block;">
            <div class="showMoreWrap">
                <a href="https://msk.shop.tele2.ru/sim/#" data-bind="click: LoadMore, css: Loading() ? 'load-rotate' : ''" class="">
                    <span data-bind="visible: !Loading()">Больше номеров</span>
                    <span data-bind="visible: Loading()" style="display: none;">Поиск</span>
                </a>
            </div>
        </div>
    </div
>
2) Классы numbers-list-bott, CanShowMore, numbers-list-bott я где-то ещё вроде видел. Они стандартные? (Я правильно называю? Что такое класс в Яве? Пользовательские структуры данных?)
Я скачивал полный документ, но функции, если они функции... LoadMore и Loading() нигде в файлах скачанной страницы не не нашёл. А такого быть не может, наверное, чтобы машина не держала их в файлах...
3) LoadMore и Loading() - это функции? Их можно по параметрам включить в запрос?
4) data-bind="click - это синтаксис события?
5) Если параметы найдутся, вопрос принципиальный такой. Можно ли в http включить в адресную строку, в запрос, ещё куда, к примеру, Bash'евские циклы? Может, кто имел дело, - их ещё называют конвейерами?
Bash
1
$ ps aux | grep [k]de | gawk '{ print $2}'
Удобство в лаконичнейшей записи ветвящегося алгоритма в одну строку...
Пожалуйста, перенесите топик ещё что-ли куда...
Заранее спасибо
0
diargon3454
18 / 18 / 4
Регистрация: 30.09.2013
Сообщений: 519
04.05.2016, 22:47 7
Не надо подгонять свой код под чужой. Пиши с нуля стараясь сделать похожее на то что тебе нужно. Так у тебя ничего не получится. Ты просто запутаешься.
1
Shakalaka
Эксперт HTML/CSS
644 / 548 / 322
Регистрация: 27.01.2015
Сообщений: 1,374
06.05.2016, 17:06 8
Цитата Сообщение от Андрэич Посмотреть сообщение
Как программно нажимать кнопку Больше номеров на странице: https://msk.shop.tele2.ru
(пока надпись на ней не поменяется на Закончились)???
Вам нужен userscript. Скачайте Tampermonkey в магазине расширений chrome, установите, создайте новый скрипт с таким содержанием
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// ==UserScript==
// @name         Autoclicker
// @namespace    [url]http://tampermonkey.net/[/url]
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        [url]https://msk.shop.tele2.ru/sim/filter/?type_num=gold,silver,platina,simple&search_num=&pack=0&cost=1,75005&type_conn=federal[/url]
// @grant        none
// ==/UserScript==
 
(function() {
    'use strict';
   var link = document.querySelector(".showMoreWrap a");
   var interval = setInterval(function(){
   link.click();  
   }, 3000);
})();
И введите нужный вам url, перейдите на страницу сайта, включите юзерскрипт, обновите сраницу, радуйтесь.
Этот скрипт будет кликать по кнопке с селектором .showMoreWrap a каждые 3 секунды.
1
Андрэич
2836 / 768 / 41
Регистрация: 20.05.2012
Сообщений: 2,056
09.05.2016, 12:13  [ТС] 9
Добавлено через 2 минуты
Цитата Сообщение от Shakalaka Посмотреть сообщение
введите нужный вам url
Это в параметр вашей функции?? У меня скрипт в Расширениях не показывается как запущенный...

Добавлено через 4 минуты
Извините, заработал, когда его записал с целевой стр. Спасибо!
0
Андрэич
2836 / 768 / 41
Регистрация: 20.05.2012
Сообщений: 2,056
10.05.2016, 16:13  [ТС] 10
Разобрался, в общем и целом. Скрипт фигачит - 80 МБ накачал(!)... Вопрос.

Теперь мне в цикле нужно опрашивать ответ функции (при изменении .Caption, data bind... останавливать скрипт).

1) Что должна вернуть (возвращать) функция -
Javascript
1
data.result == "success"
Javascript
1
control.val=="Закончилось"
? Правильно?

2) Какой мне лучше всего прикрутить объект автоматизации (из VB(A)(S), JS, WinAPI...)?
Есть ли для того спец 'скриптовые' библиотеки на Винде ?

Спасибо
0
Padimanskas
Superposition
935 / 596 / 256
Регистрация: 27.10.2013
Сообщений: 2,069
10.05.2016, 17:50 11
Цитата Сообщение от Андрэич Посмотреть сообщение
Я так понимаю, нужно сначала нам выяснить платформу (движок), на чём там написано, туда потом и обращаться...
Написано там на кнокауте(вряд ли это нужно знать), хотя обычно советуют пользовать гризманки, но тут есть и джквери. Если очень просто и быстро, то как-то так(нужно выполнить в консоли браузера):

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
var btn = $('div.showMoreWrap a');
btn.click(function () {
  $this = $(this);
  setTimeout(function () {
    var txt = $this.find('span:first-child').text();
    if(txt !== 'Закончились') $this.click();
 
  }, 800);
  
});
 
btn.click();
0
Андрэич
2836 / 768 / 41
Регистрация: 20.05.2012
Сообщений: 2,056
10.05.2016, 18:24  [ТС] 12
Спасибо, я разберусь теперь уже точно, доделаю, если не идеально... Там, как я понял, на jQuery и Ajax'e.
А мне нужно к этой странице коннектиться снаружи: я её сначала скачиваю, потом разбираю регами...
Мне желательно не углубляться во всех этих современных технологиях, мне без наворотов, по рабоче-крестьянски
(есть ещё и другие кабины с бобИнами, кроме меня ... ))

Я правильно понял, что, напр, jQuery - это апгрейд JS для оптимизации и убыстрения писания страниц с кодом,
a с Ajax - запросы могут выполняться вразнобой, разными объёмами для разных частей вэб-страницы, чтобы не гонять трафик или, как в моём случае, для подкачки данных?..
0
ntlinuxnt
$ su
1598 / 513 / 97
Регистрация: 18.11.2010
Сообщений: 2,805
Записей в блоге: 2
Завершенные тесты: 5
10.05.2016, 20:23 13
Цитата Сообщение от Андрэич Посмотреть сообщение
Я правильно понял, что, напр, jQuery - это апгрейд JS для оптимизации и убыстрения писания страниц с кодом,
a с Ajax - запросы могут выполняться вразнобой, разными объёмами для разных частей вэб-страницы, чтобы не гонять трафик или, как в моём случае, для подкачки данных?..
jQuery-это библиотека упрощающая укорачивающая конструкции для работы с страницей, просто если писать на голом js то кода получается немного больше, но опять же нет смысла применять jquery ради пары функций, потому что весит она прилично.
Ajax-позволяет обращаться к серверу не перезагружая страницу при этом экономя трафик и уменьшая нагрузку на сервер.
1
Padimanskas
Superposition
935 / 596 / 256
Регистрация: 27.10.2013
Сообщений: 2,069
10.05.2016, 20:51 14
Андрэич, К кнопке прибиндин метод который выполняет ajax-запрос к серверу. Этот метод находится внутри какой-то модели кнокаута и извне не доступен. Самый простой способ - это воспользоваться jquery для запуска обработчика кнопки. Jquery уже есть на этой странице поэтому нет смысла подключать его заново. Вообще в этом случае неизвестно когда придет ответ от сервера(с этим справляется широкий канал и значительное время задержки между запросами - 800мс), но задача состоит только в одноразовом сборе данных, поэтому такой даже грубый недостаток несущественен.
1
Андрэич
2836 / 768 / 41
Регистрация: 20.05.2012
Сообщений: 2,056
10.05.2016, 21:26  [ТС] 15
Padimanskas, спасибо!

А, например, если я страницу скачаю и потом разберу её по винтикам, напихаю туда кода, какого нужно, - так не получится? Какая у неё остаётся связь с сервером, чтобы он не дал так сделать? Токены какие-нибудь?..

Или как-нибудь отчленить этот фрэйм (если правильно назвал), в который данные закачиваются, не получится?

Ещё в моём распоряжении есть библиотеки WinHttpRequest, MXTML, WMI, Microsoft JScript и др (я работаю в основном из MS Access, VB...). Никак судьбу не обмануть, как-н потехничесчее?

Добавлено через 4 минуты
Цитата Сообщение от Padimanskas Посмотреть сообщение
неизвестно когда придет ответ от сервера(с этим справляется широкий канал и значительное время задержки между запросами - 800мс)
По началу всё летит, потом, видимо, из-за объёма (80МБ!!!), тормозит, и даже поболее 1 сек... Думаю, что перед каждым запросом, вызовом функции нужно получать значение баинда надписи кнопки...
0
Андрэич
2836 / 768 / 41
Регистрация: 20.05.2012
Сообщений: 2,056
21.05.2016, 10:02  [ТС] 16
Прикол в том, что перестала работать в Яндекс Браузере (может быть из-за Бета версии), но и в Mozill'e (там Tampermonkey??) тоже не пашет
0
BANO
Ренегат
Эксперт HTML/CSS
1716 / 1059 / 385
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
21.01.2017, 03:42 17
Цитата Сообщение от Андрэич Посмотреть сообщение
Mozill'e (там Tampermonkey??)
Там грейсманки. Но скрипт тот же.
0
alexsamos33
619 / 599 / 325
Регистрация: 26.04.2014
Сообщений: 1,970
21.01.2017, 16:00 18
Андрэич, Может лучше на JScript без браузера сделать?
Это будет примерно так, вот готовый архив с примером: numbers_collect_t2.zip .
Сохраните на компьютере с расширением .js и двойным кликом запустите. Данные запишутся в файл. По номеру на строку...
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function getNumbers(page){
var req = new ActiveXObject("Msxml2.XMLHTTP");
req.open("POST", "https://msk.shop.tele2.ru/sim/getmorenumbers/", false);
req.setRequestHeader("Content-Type", "application/json; charset=UTF-8");
req.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:50.0) Gecko/20100101 Firefox/50.0");
req.setRequestHeader("Accept", "application/json, text/javascript, */*; q=0.01");
req.setRequestHeader("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3");
req.setRequestHeader("Accept-Encoding", "deflate");
req.setRequestHeader("X-Requested-With", "XMLHttpRequest");
req.setRequestHeader("Referer", "https://msk.shop.tele2.ru/sim/filter/?type_num=silver,platina,gold,simple&search_num=&pack=0&cost=1,75005&type_conn=federal");
req.send('{"filter":{"Categories":["federal"],"Query":"","Packages":[0],"Types":["silver","platina","gold","simple"],"PriceFrom":1,"PriceTo":75005,"ShowAction":true,"Page":'+i+'}}');
return req.responseText;
}
 
var numbers = new Array();
var fso = new ActiveXObject('Scripting.FileSystemObject'), fl=fso.OpenTextFile(".\\tele2_numbers.txt",2,true);
for (var i=1; i<1000; i++){
var resp = getNumbers(i);
try{
var jsdt = eval('('+resp+')');
var numcollection = jsdt.Lines[0].Left.Collection;
for(j=0; j<numcollection.length; j++){
fl.WriteLine(numcollection[j].FullNumber);
numbers.push(numcollection[j].FullNumber);
//WScript.echo ( numcollection[j].FullNumber );
}
}catch(er){
// WScript.echo(er.description);
break;
}
}
fl.close();
fl=null;
//WScript.echo(numbers[10]);
 
WScript.echo("Numbers colection completed!");
0
21.01.2017, 16:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2017, 16:00

Кнопка на сайте
Здравствуйте! На сайте нужно разместить кнопку, при нажатии которой , будет...

Не работает кнопка на сайте
Извините если не туда пишу, может это не в java надо в общем не знаю, я ка бы в...

Кнопка Скачать на сайте DLE
Добрый день многоуважаемые! Имеется сайт на dle и не могу установить (вывести...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru