Форум: "Начинающим";
Текущий архив: 2012.02.12;
Скачать: [xml.tar.bz2];
ВнизДождаться выполнения скрипта. Найти похожие ветки
← →
Mach3 (2011-11-01 08:20) [0]Привет. Пытаюсь загрузить страничку, кликнуть по "кнопке" и после получить нужный контент. Но как дождаться окончания выполнения Java скрипта не знаю.
WebBrowser1.Navigate("http://www.ru");
while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
Application.ProcessMessages;
WebBrowser1.OleObject.Document.getElementByID("show_contacts").click;
S:= WebBrowser1.OleObject.Document.getElementByID("show_contacts").innerHTML;
Необходимо, чтобы в S содержалось значение после выполнения скрипта..
← →
sniknik © (2011-11-01 08:55) [1]> Необходимо, чтобы в S содержалось значение после выполнения скрипта..
в общем случае не получится... в веб приложениях (не странички с вкраплениями скриптов) скрипты никогда не заканчивают выполнятся... взаимодействуют с клиентом, по его реакции ветвятся и размножаются... ;)
← →
Mach3 (2011-11-01 09:13) [2]ммм.. не совсем понял..
если выполнить вышеприведенный мною код, то в S будет содержться контент, как если быWebBrowser1.OleObject.Document.getElementByID("show_contacts").click;
не выполнялось.
короче, надо как-то подождать пару секунд, после чего выполнятьS:= WebBrowser1.OleObject.Document.getElementByID("show_contacts").innerHTML;
пробовал после "клика" запускать подобный цикл:
repeat
sleep(1000);
S := WebBrowser1.OleObject.Document.getElementByID ("show_contacts").innerHTML;
until Pos("+7",S) > 0;
помогло только после клика запустить таймер и по таймеру получить значение в S.
но это бредятина..
неужели никак нельзя отследить завершение выполненияWebBrowser1.OleObject.Document.getElementByID("show_contacts").click;
← →
Омлет © (2011-11-01 09:13) [3]http://js.aceweb.ru/users/4/index/2/index.html
Когда выполнится скрипт на этой странице?
← →
Омлет © (2011-11-01 09:25) [4]> Mach3 (01.11.11 09:13) [2]
Проверяй по таймеру - жди, когда будет какой-то известный для конкретной страницы признак завершения работы скрипта.
← →
sniknik © (2011-11-01 09:39) [5]для конкретно данного кода(страницы)... там нет скриптов, там есть пере направление (302).
что мешает дать "прямой" адрес?
← →
Mach3 (2011-11-01 09:50) [6]
> Когда выполнится скрипт на этой странице?
в JS не разбираюсь, но предположу что тут бесконечный цикл с изменением ГИФА каждую 1000ms.. следовательно никогда..
> Проверяй по таймеру - жди, когда будет какой-то известный
> для конкретной страницы признак завершения работы скрипта.
>
по таймеру-то все норм.. так и делал..
не могу понять, почему следующий код не работаетrepeat
sleep(1000);
S:= WebBrowser1.OleObject.Document.getElementByID("show_contacts").innerHTML;
memo1.Lines.Add("NOT_READY")
until pos("+7",S) > 0;
memo1.Lines.Add(s);
в браузере контакты уже открылись, а значение не изменилось..
буд-то старые данные юзает..
← →
sniknik © (2011-11-01 09:54) [7]> не могу понять, почему следующий код не работает
может потому, что ты нас обманываешь?
по данному адресу вообще нет элемента с show_contacts ... а мы как бы уже выяснили что "в общем" не решается. в частном... может быть, но только если "лечить где болит, а не тоже место у соседа".
var
Elem: Variant;
begin
WebBrowser1.Navigate("http://www.ru");
while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
Application.ProcessMessages;
Elem:= WebBrowser1.OleObject.Document.getElementByID("show_contacts");
if not VarIsClear(Elem) then begin
Elem.click;
Memo1.Text:= Elem.innerHTML;
end;
end;
← →
Mach3 (2011-11-01 09:54) [8]
> что мешает дать "прямой" адрес?
т.е.? посмотреть снифером и составить нужный запрос серверу?!
пытался, но в запросе необходимо указать параметр, который всегда разный. а как его получить я понять не смог..
← →
Mach3 (2011-11-01 09:56) [9]а.. да пожалуйста..
http://ussuriisk.drom.ru/toyota/succeed/6054110.html
← →
sniknik © (2011-11-01 09:58) [10]> посмотреть снифером
какие вы сложные...
а чем браузер не подходить?
http://www.ru перенаправляется на http://www.ru/rus/index.php и это видно прямо в заголовке браузера.
← →
Mach3 (2011-11-01 09:59) [11]ваш код тоже не сработал..
← →
Mach3 (2011-11-01 10:00) [12]
> http://www.ru
это не адрес.. это его кусок.. =))
← →
sniknik © (2011-11-01 10:05) [13]> ваш код тоже не сработал..
а он и де должен, у него другая задача - показать, что id show_contacts там нет.
> это не адрес.. это его кусок.. =))
ну и кого ты в итоге обманул?
++
сбор личных данных незаконен.
← →
Омлет © (2011-11-01 10:10) [14]> sniknik © (01.11.11 10:05) [13]
> сбор личных данных незаконен.
В России-то? )
← →
Mach3 (2011-11-01 10:11) [15]обманывать никого и не собирался..
сбор?!! спам меня не интересует..
← →
Mach3 (2011-11-01 10:12) [16]так решения отличного от использования таймера не придвидится?
← →
Омлет © (2011-11-01 10:37) [17]> Mach3 (01.11.11 10:12) [16]
> так решения отличного от использования таймера не придвидится?
Используй Selenium.
← →
Медвежонок Пятачок © (2011-11-01 10:38) [18]убрать делфи.
взять например хром.
+ юзер скрипты
+ евент на изменение дива addEventListener("DOMSubtreeModified"....
← →
sniknik © (2011-11-01 10:56) [19]> обманывать никого и не собирался..
не собирался, но обманул... на автомате. страааашный человек...
> убрать делфи.
оставить дельфи, убрать WebBrowser, посмотреть как с скрипте формируется запрос для аякс... (простой get на ....php с параметрами), и вызывать его самому, чем угодно хоть indy (сначала естественно оригинальную страничку... но судя по приведенной ссылке с кодом, она уже есть). там сразу будет телефон...
← →
Омлет © (2011-11-01 10:58) [20]http://ussuriisk.drom.ru/auto/?_=1320134266513&bull_id=6054110&obj=show_contacts&crossdomain_ajax_request=2&re quest=ajax_show_contacts
← →
Омлет © (2011-11-01 10:58) [21]Пробел надо убрать, ссылка разорвалась.
← →
Медвежонок Пятачок © (2011-11-01 11:44) [22]ну если там телепон с сервера аяксом тянется, то конечно у сервера и надо спросить без всяких браузеров.
я-то думал, что там матан в самом скрипте и телефон генерируется на клиенте.
← →
Mach3 (2011-11-01 15:05) [23]
http://ussuriisk.drom.ru/auto/?_=1320134266513&bull_id=6054110&obj=show_contacts&crossdomain_ajax_request=2&re quest=ajax_show_contacts
> т.е.? посмотреть снифером и составить нужный запрос серверу?
> !пытался, но в запросе необходимо указать параметр, который
> всегда разный. а как его получить я понять не смог..
Если послать этот запрос, контакты вернуться верными за исключением кода оператора.
А как получить _=1320134266513 я не догадался..
← →
Омлет © (2011-11-01 15:12) [24]> А как получить _=1320134266513 я не догадался..
Это похоже на timeStamp.
← →
Mach3 (2011-11-01 15:26) [25]т.е. получить его невозможно?
← →
Mach3 (2011-11-01 15:34) [26]
> на автомате. страааашный человек...
не суди.. и не судимым будешь..
← →
Омлет © (2011-11-01 15:40) [27]> т.е. получить его невозможно?
Возможно. Это текущая дата/время в формате unix time (1320134266513), плюс миллисекунды - 3 цифры в конце (1320134266513).
← →
Омлет © (2011-11-01 15:43) [28]Да и вообще, этот параметр можно не передавать.
Так запрос тоже работает:
http://ussuriisk.drom.ru/auto/?bull_id=6054110&obj=show_contacts&crossdomain_ajax_request=2&request=ajax_show_ contacts
И даже так работает:
http://ussuriisk.drom.ru/auto/?bull_id=6054110&request=ajax_show_contacts&crossdomain_ajax_request=2
← →
sniknik © (2011-11-01 15:48) [29]> не суди.. и не судимым будешь..
не обманывай... и не ... (вставить любую банальность. по желанию). отношение будет другое.
> Возможно.
а зачем? ;)
← →
Mach3 (2011-11-01 15:52) [30]НЕ РАБОТАЕТ..
Переходя по ссылкам получаем номер +7 (956) 717-3126
а должен бть +7 (961) 212-1527
← →
Mach3 (2011-11-01 15:54) [31]Т.Е. +7 (914) 717-3126
Код оператора неверен
← →
sniknik © (2011-11-01 16:04) [32]опять обманываешь... зачем тебе это?
> И даже так работает:
> http://ussuriisk.drom.ru/auto/?bull_id=6054110&request=ajax_show_contacts&crossdomain_ajax_request=2
вот проверяем, меняем id
http://ussuriisk.drom.ru/auto/?bull_id=6054111&request=ajax_show_contacts&crossdomain_ajax_request=2
и получаем вместо +7 (956) 717-3126 это +7 (986) 124-9629<br />+7 (986) 135-7123
т.е. все меняется, все ок, все РАБОТАЕТ
с чего ты взял что "должен бть" нам неведомо... и значит как аргумент не принимается.
← →
Mach3 (2011-11-01 16:17) [33]Может я чего не понимаю?!!!!!!!!
Посмотри на коды операторов: (956), (986).. таких, возможно даже не существует..
по объявлению http://ussuriisk.drom.ru/toyota/succeed/6035047.html номер должен быть +7 (924) 261-0278
выполняя запрос http://ussuriisk.drom.ru/auto/?bull_id=6035047&request=ajax_show_contacts&crossdomain_ajax_request=2 получаем +7 (996) 261-0278
может у меня чего не так?!
← →
Медвежонок Пятачок © (2011-11-01 16:23) [34]видимо не хватает полей в заголовке гет запроса, а они анализируются сервером.
← →
Медвежонок Пятачок © (2011-11-01 16:28) [35]по крайней мере два потенциальных поля для этого я там вижу
← →
Mach3 (2011-11-01 16:34) [36]Поделитесь? я ничего не вижу =((((
← →
Медвежонок Пятачок © (2011-11-01 16:36) [37]ты в заголовки-то смотри в случае гета из браузера и гета аяксового.
> не суди.. и не судимым будешь..
не тупи и не тупым будешь
← →
Mach3 (2011-11-01 16:36) [38]
(Request-Line):GET /auto/?_=1320154001505&bull_id=5800891&obj=show_contacts&crossdomain_ajax_request=2&re quest=ajax_show_contacts HTTP/1.1
User-Agent:Opera/9.80 (Windows NT 5.1; U; MRA 5.7 (build 03639); ru) Presto/2.9.168 Version/11.51
Host:ussuriisk.drom.ru
Accept-Language:ru-RU,ru;q=0.9,en;q=0.8
Accept-Encoding:gzip, deflate
Referer:http://ussuriisk.drom.ru/toyota/succeed/5800891.html
Cookie:PHPSESSID=6d4dc5cfeb76f2390bf7d3caad5c209b; cookie_cityid=4; cookie_regionid=25; DromCurrencyCookie=1; my_geo=25; __utma=175010237.909993659.1292484248.1320132495.1320151997.38; __utmb=175010237.8.10.1320151997; __utmc=175010237; __utmz=175010237.1320132495.37.3.utmcsr=delphimaster.ru|utmccn=(referral)|utmcmd =referral|utmcct=/cgi-bin/forum.pl
Connection:Keep-Alive
Content-Type:application/x-www-form-urlencoded
X-Requested-With:XMLHttpRequest
Accept:application/xml, text/xml, */*(Request-Line):GET /auto/?_=1320154001505&bull_id=5800891&obj=show_contacts&crossdomain_ajax_request=2&re quest=ajax_show_contacts HTTP/1.1
Content-Type:text/html
Host:ussuriisk.drom.ru
Accept:text/html, */*
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)
Почти одно и тоже
← →
Медвежонок Пятачок © (2011-11-01 16:38) [39]Почти одно и тоже
так тебе почти одни и те же коды оперторов возвращаются в обоих случаях.
ну немного отличаются.
но не на порядок же.
← →
Mach3 (2011-11-01 16:40) [40]"Откуда пришли" указать?
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2012.02.12;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.005 c