Страницы: 1
Здравствуйте, сайт на котором должен работать мой скрипт к сожалению иногда меняет вид - приходится править код, чтобы облегчить свой труд я храню образцы предыдущей версии сайта что бы можно было сравнить и быстро найти что изменили. Но вот последний раз это мне не помогло, я не могу найти отличий в коде страницы которые мешают работать коду как положено.
Я покажу кусок кода который отвечает за идентификацию самого себя по нику, и добавление моей цены в переменную для дальнейшей работы с ней
[spoiler][code]var macro;
macro = "CODE:";
var nodes = window.document.querySelectorAll('.tc-item');
for (i=0;i<nodes.length;i++) {
var node = nodes[i];
var data_server = node.getAttribute('data-server');
var data_side = node.getAttribute('data-side');
var name = node.querySelector('.media-user-name').textContent;
var m_name = "golovin"; //ввожу свой ник (сейчас ввожу любой ник для теста работоспособнисти скрипта, проверить найдет ли он цену продавца по нику)
var m_price = Number(node.queryS
Спасибо, все работает чётко :D
Теперь от нажатия "Воспроизвести" до того момента когда моя цена окажется вне конкуренции - всего 1.22 секунды!
О такой скорости я даже не мечтал, ведь даже если 30 сек уходило это событие, вручную никто бы не тягался, ну мне интересно было довести дело до конца)
Это мой(ну на 25% точно мой) первый рабочий скрипт!Буду интересоваться тематикой JS и далее, если бы не ваша помощь, я бы скорей всего дал заднюю в этом деле.
Дай бог Вам здоровья!(хоть я и атеист, ну неважно!)За то что тратите свое время на помощь другим безвозмездно!
Подскажите напоследок, если реализовывать подобный софт в виде десктопного приложения, то это делается тоже на JS? или это будет в разы сложнее чем на аймакросе и не стоит потраченного времени? как такую тематику правильно гуглить? Что бы копать хотя бы в нужном направлении)
Вот заголовки этого XHR
в общем сервер отказывается принимать искусственно отправленный запрос(я никакие параметры его не менял, просто переотправил ранее отправленный запрос) выдает ошибку 403. "HTTP 403 Forbidden" указывает, что сервер понял запрос, но отказывается его авторизовать
ответ пришел такой:
да я уже вроде бы все запросы перебрал, если не трудно посмотрите сами, я вам ПМ написал данные для авторизации
у меня есть подозрения что вот этот запрос мне нужен,
в первом было написано "No parameters for this request"
а второй, который прилетел спустя 15 сек содержал уже такую инфу
objects: [{"type":"orders_counters","id":"97115","tag":"5l1wel5t","data":false},{"type":"chat_counter","id":"97115","tag":"pw47f3m8","data":false}] request: false csrf_token: l5tl961n7xlrlikj
после изменения цены прилетел вот этот XHR (который GET прилетел через ~секунду, кторый POST через ~10 )
В Firefox Ctrl + Shift + E
или F12 -> вкладка "Сеть"
дело в том что я не нашел в своем запросе "trade" данные которые отвечают за изменение цены
подскажите пожалуйста как это примерно должно выглядеть, я примеров не нашел похожих
сейчас код работает так
var XMLHttpRequest=Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1"); var b=XMLHttpRequest(); b.open('GET','https://тутURL/chips/118/trade',false); b.send(''); var body = b.responseText; content.document.querySelector('body').innerHTML = body; iimPlayCode('WAIT SECONDS=0.1'); window.document.querySelector('[name="offers[3194][52][price]"]').value=pricelast; iimPlayCode('WAIT SECONDS=0.1'); window.document.querySelector('[type="submit"]').click();
да это я понял, я уже исправил это вот так
var m_price = Number(node.querySelector('.text-right>div').textContent.match(/[0-9.]+/)[0]);
var m_price = (node.querySelector('.text-right>div').textContent.match(/[0-9.]+/)[0]); //идентифицирую свою цену по собственному нику if(data_server==3194&&data_side==52&&name==m_name) и доставал цену продавца var price = node.querySelector('.text-right>div').textContent.match(/[0-9.]+/)[0]; if(data_server==3194&&data_side==52&&data_online==1&&name!=m_name){
И есчо: сегодня я для себя открыл такую новинку как GET запрос, и очумел когда увидел скорость работы своего скрипта на
…опять здравствуйте) не могли бы вы мне объяснить как происходит такая магия:
var cop = (0.01);// 1 копейка var cop2 = (0.02); var verh = (m_price+cop2);// верхний упор (моя цена +2 коп) var pricetax = (price*tax); var pricelast = (pricetax-cop);//конечная цена -1 копейка window.console.log(+pricetax +"-1 копейка = " +pricelast); //проверил как работает отнимание 1 копейки window.console.log(+m_price +" + " +cop2 +" = " +verh); //проверяю как работает прибавление 2 копеек
еще вот так пробовал, не непомогло
window.document.getElementsByClassName('input[name=offers[3199][54][price]]').value="TEXT";
большое спасибо за предыдущую помощь, не могли бы вы мне еще объяснить как определить правильно форму?
я постоянно чтобы что-то написать на js ищу похожие образцы кода в "интернетах", если точного аналога нету, начинаю перебирать разные варианты из "похожего"
может есть какой браузер/плагин чтобы при наведении на элемент в коде он мне писал "Вася искомый тобой заветный value="102.2" относится к (условно) getElementsByName('offers[3230][52][price]');
мне кажется что мои способы решения моих задач, аналогичны с попыткой езды на велосипеде с квадратными колесами
<input class="form-control price" name="offers[3230][52][price]" value="102.25" autocomplete="off" type="text">
дело в том что "я" уже написал вот такой код
[spoiler][code]
//чекаю свою цену
var nodes = window.document.querySelectorAll('tr[data-href]');
for (i=0;i<nodes.length;i++) {
var node = nodes[i];
var data_server = node.getAttribute('data-server');
var data_side = node.getAttribute('data-side');
var data_online = node.getAttribute('data-online');
var name = node.querySelector('a').textContent;
var m_name = "godmode";
var m_price = node.querySelector('.text-right>div').textContent.match(/[0-9.]+/)[0];
if(data_server==3194&&data_side==52&&data_online==1&&name==m_name){//проверка сервак, сторона, онлайн, мой ник
window.console.log(m_price);
//alert(m_price);
break;}
}
//чекаю чужую самую низкую цену
var nodes = window.document.querySelectorAll('tr[data-href]');
for (i=0;i<nodes.length;i++) {
var node = nodes[i];
var data_server = node.getAttribute('data-server');
var data_side = node.getAttribute('data-side');
var data_online = node.getAttribute('data-online');
вот так заработало, спасибо!
написал break; как вы сказали, теперь консоль пустая совсем
var nodes = window.document.querySelectorAll('tr[data-href]'); for (i=0;i<nodes.length;i++) { var node = nodes[i]; var data_server = node.getAttribute('data-server'); var data_side = node.getAttribute('data-side'); var data_online = node.getAttribute('data-online'); var name = node.querySelector('a').textContent; var m_name = "godmode"; var price = node.querySelector('.text-right>div').textContent; if(data_server==3194&&data_side==52&&data_online==1&&name!=m_name)//проверяю чтобы все совпадало window.console.log(price.match(/[0-9.]+/)[0]); break; }
консолью я пользуюсь)
и с таким кодом
var nodes = window.document.querySelectorAll('tr[data-href]'); for (i=0;i<nodes.length;i++) { var node = nodes[i]; var data_server = node.getAttribute('data-server'); var data_side = node.getAttribute('data-side'); var data_online = node.getAttribute('data-online'); var name = node.querySelector('a').textContent; var m_name = "godmode"; var price = node.querySelector('.text-right>div').textContent; if(data_server==3194&&data_side==52&&data_online==1&&name!=m_name)//проверяю чтобы все совпадало window.console.log(price.match(/[0-9.]+/)[0]); }
я с js как и с программированием в общем знаком 2 дня
если честно я не совсем понимаю что вы написали, а также не совсем понимаю куда это вставлять)
про кавычки вы правильно подметили, просто в этом коде, такой ошибки нету даже без кавычек
var macro; macro = "CODE:"; var node = window.document.querySelector('tr[data-href]'); var data_server = node.getAttribute('data-server'); var data_side = node.getAttribute('data-side'); var data_online = node.getAttribute('data-online'); var name = node.querySelector('a').textContent; var price = node.querySelector('.text-right>div').textContent; if(data_server==3194&&data_side==52&&data_online==1&&name!=godmode){ window.console.log(price.match(/[0-9.]+/)[0]); }
хотелось бы извлечь лишь самую дешевую цену, а не все, чтобы потом попробовать запилить проверку по нику "не принадлежит ли эта самая дешевая цена - мне" если цена моя, то обновляем страницу и поновой чекаем, ну а если цена не моя, а "ProdavecVasia" то там уже совсем другая история) туда пока еще я не дошел
var macro; macro = "CODE:"; var nodes = window.document.querySelectorAll('tr[data-href]'); for (i=0;i<nodes.length;i++) { var node = nodes[i]; var data_server = node.getAttribute('data-server'); var data_side = node.getAttribute('data-side'); var data_online = node.getAttribute('data-online'); var name = node.querySelector('a').textContent; var m_name = "godmode"; var price = node.querySelector('.text-right>div').textContent; if(data_server==3194&&data_side==52&&data_online==1&&name!=godmode)//проверяю чтобы все совпадало window.console.log(price.match(/[0-9.]+/)[0]); }
спасибо за отклик, вы значительно подвинули меня к конечной цели)
ну я снова остановился на условии else
var node = window.document.querySelector('tr[data-href]'); var data_server = node.getAttribute('data-server'); var data_side = node.getAttribute('data-side'); var data_online = node.getAttribute('data-online'); var price = node.querySelector('.text-right>div').textContent; if(data_server==3194&&data_side==52&&data_online==1){ //проверяю чтобы все совпадало window.console.log(price.match(/[0-9.]+/)[0]);} //вывожу цену если все ок по моим критериям else{ тут если не совпадает, хочу сказать чтобы скрипт проверял дальше, следующий var node, как это правильно писать? что почитать на эту тему? }
Добрый вечер, я совсем новичек в этом деле, начинаю с самого простого, но уже нужна помощь более опытных)
Помогите пожалуйста мне извлечь данные из сайта при некоторых условиях, а именно:
1 data-server=9792
2 data-side=52
3 data-online=1
если все эти 3 параметра совпадают - тогда нужно цену сохранить в файл, но вообще моя цель это сохранить самую дешевую цену из всех(что попали под 3 мои условия выше) в файл или переменную
[spoiler][code]<tr data-href="тутURL" data-server="9792" data-side="52" data-online="1">
<td>ServerAbc</td>
<td>Orki</td>
<td><div>
<a href="тутURL/users/2323/">ProdavecVasia</a>
<span class="label label-success">online</span>
<a href="тутURL">ProdavecVasia</a> <span class="label label-success">online</span></div><div class="text-muted">на сайте год, 333 отзывов</div></td> <td class="text-right">
49 </td>
<td
Страницы: 1