powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Парсинг динамического контента
25 сообщений из 110, страница 1 из 5
Парсинг динамического контента
    #39879751
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно ворпос существуют ли инструменты ,как распарсить HTML страницу в динамичным контентом?
jsoup не умеет

сама страница https://www.stoloto.ru/ruslotto/game?int=right&lastdraw
код страницы на картинке
мне нужено достать id билета и цифры из таблиц

если я делаю это обычным jsoup парсером -я получаю пустоту

Код: java
1.
2.
3.
4.
   Document doc = Jsoup.connect("https://www.stoloto.ru/ruslotto/game?int=right&lastdraw")
                .userAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21")
                .get();
        Elements ticketId=doc.select("tr.numbers");


получаем на выходе

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<tr class="numbers"> 
 <td></td> 
 <td></td> 
 <td></td> 
 <td></td> 
 <td></td> 
 <td></td> 
 <td></td> 
 <td></td> 
 <td></td> 
</tr>



естественно значений нет - так как они вставляются туда скриптом


вот сам код изнутри

если кто то делал подобные вещи подскажите как это сделать в гуглах на эту тему ничего толкового нет
...
Рейтинг: 0 / 0
Парсинг динамического контента
    #39879754
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в любом браузере есть интструменты разработчика. Посмотри, какие запросы идут на сервер, и выполни их сам. Скорее всего там будет json контент, который тебе и нужен
...
Рейтинг: 0 / 0
Парсинг динамического контента
    #39879760
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79естественно значений нет - так как они вставляются туда скриптомкод js на разные события (перемещение мышки) изменяет DOM.
Поэтому если не идет инфа на сервер, то достать невозможно. Ну или очень сложно.
Поэтому сам не делай динамичные сайты (одного окна).
...
Рейтинг: 0 / 0
Парсинг динамического контента
    #39879764
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanraв любом браузере есть интструменты разработчика. Посмотри, какие запросы идут на сервер, и выполни их сам. Скорее всего там будет json контент, который тебе и нужен
там запросы идут постоянно вот при обновлении билетов выловил вот этот запрос
https://s.stoloto.ru/service/bingo/ruslotto/change?callback=jQuery171010123521258160095_1571660062717&numbersToChange=%5B%7B%22barCode%22%3A%22999847030297%22%7D%2C%7B%22barCode%22%3A%22999847451294%22%7D%2C%7B%22barCode%22%3A%22999848565640%22%7D%5D&_=1571731633691]https://s.stoloto.ru/service/bingo/ruslotto/change?callback=jQuery171010123521258160095_1571660062717&numbersToChange=[{"barCode":"999847030297"},{"barCode":"999847451294"},{"barCode":"999848565640"}]&_=1571731633691

который возвращает вот такой json
Код: html
1.
jQuery171010123521258160095_1571660062717({"status":"pending"});
...
Рейтинг: 0 / 0
Парсинг динамического контента
    #39879765
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharpasv79естественно значений нет - так как они вставляются туда скриптомкод js на разные события (перемещение мышки) изменяет DOM.
Поэтому если не идет инфа на сервер, то достать невозможно. Ну или очень сложно.
Поэтому сам не делай динамичные сайты (одного окна).

В данном случае номер билета врядли генерится на клиенте, он 100% приходит с сервера, либо в json запросе либо в теге скрипт. Поэтому достаточно узнать где он лжеит и просто выдрать оттуда
...
Рейтинг: 0 / 0
Парсинг динамического контента
    #39879766
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharpasv79естественно значений нет - так как они вставляются туда скриптомкод js на разные события (перемещение мышки) изменяет DOM.
Поэтому если не идет инфа на сервер, то достать невозможно. Ну или очень сложно.
Поэтому сам не делай динамичные сайты (одного окна).
ну как то же эти цифры туда записываются?
значит все таки с сервера в виде json прилетают
не могу найти этот запрос в куче остальных
...
Рейтинг: 0 / 0
Парсинг динамического контента
    #39879767
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79не могу найти этот запрос в куче остальныхэто самое простое. Ищи на F12
...
Рейтинг: 0 / 0
Парсинг динамического контента
    #39879770
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никPetroNotC Sharpпропущено...
код js на разные события (перемещение мышки) изменяет DOM.
Поэтому если не идет инфа на сервер, то достать невозможно. Ну или очень сложно.
Поэтому сам не делай динамичные сайты (одного окна).

В данном случае номер билета врядли генерится на клиенте, он 100% приходит с сервера, либо в json запросе либо в теге скрипт. Поэтому достаточно узнать где он лжеит и просто выдрать оттуда
да я думаю это так и есть-а вот как узнать?)
...
Рейтинг: 0 / 0
Парсинг динамического контента
    #39879772
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79,
Хром, F12 - найти где в коде изменяется div
- Elements
- ПКМ на div
- Break on - Attribute modifications
...
Рейтинг: 0 / 0
Парсинг динамического контента
    #39879773
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79как узнать?работать за JS прогера. Ты же не хотел всего месяц назад)))
...
Рейтинг: 0 / 0
Парсинг динамического контента
    #39879780
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нашел там json

Код: xml
1.
jQuery171010123521258160095_1571660062720({"status":"ok","combinations":[{"barCode":"999848718755","number":"999848718755","numbers":[25,32,66,77,85,10,44,52,62,90,8,15,45,58,70,7,22,37,75,86,3,21,53,63,73,19,30,47,55,81],"favouriteNumbers":[]},{"barCode":"999848087099","number":"999848087099","numbers":[6,42,66,76,83,35,41,54,64,78,8,13,20,38,81,5,14,25,65,90,21,33,44,60,85,7,39,46,55,71],"favouriteNumbers":[]},{"barCode":"999848722212","number":"999848722212","numbers":[7,30,56,66,85,29,39,42,50,67,1,12,41,71,84,8,23,36,43,60,10,48,59,70,80,4,19,55,62,74],"favouriteNumbers":[]},{"barCode":"999860109563","number":"999860109563","numbers":[2,10,33,58,82,15,27,37,61,70,29,40,55,78,90,3,18,24,35,43,1,36,64,77,87,14,46,51,63,80],"favouriteNumbers":[]},{"barCode":"999860072050","number":"999860072050","numbers":[10,44,51,64,85,11,37,66,76,89,8,27,35,57,79,5,45,59,78,83,9,25,31,56,87,15,23,39,41,60],"favouriteNumbers":[]},{"barCode":"999848588319","number":"999848588319","numbers":[10,21,43,67,74,31,46,51,77,83,7,26,53,65,88,19,25,38,45,80,6,41,50,62,70,2,23,32,69,85],"favouriteNumbers":[]},{"barCode":"999847498971","number":"999847498971","numbers":[5,21,48,65,86,29,39,51,62,73,15,37,46,53,75,11,31,45,58,68,27,38,40,76,87,9,55,69,71,89],"favouriteNumbers":[]},{"barCode":"999860054501","number":"999860054501","numbers":[10,33,58,70,84,13,20,34,52,68,2,40,64,76,88,6,22,30,65,72,12,26,31,66,83,5,19,42,56,81],"favouriteNumbers":[]},{"barCode":"999848715475","number":"999848715475","numbers":[7,39,55,63,75,12,23,42,53,77,5,27,33,45,90,24,41,59,68,71,2,19,36,72,80,10,35,52,62,88],"favouriteNumbers":[]},{"barCode":"999859451268","number":"999859451268","numbers":[19,33,46,78,87,11,31,51,65,80,6,20,42,54,77,26,48,62,72,90,4,25,39,75,81,15,37,49,58,68],"favouriteNumbers":[]}]});





я так понял прилетает он после вот этого запроса
https://s.stoloto.ru/service/bingo/ruslotto/change?callback=jQuery171010123521258160095_1571660062718&numbersToChange=%5B%7B%22barCode%22%3A%22999847030297%22%7D%2C%7B%22barCode%22%3A%22999847451294%22%7D%2C%7B%22barCode%22%3A%22999848565640%22%7D%5D&_=1571731634332]https://s.stoloto.ru/service/bingo/ruslotto/change?callback=jQuery171010123521258160095_1571660062718&numbersToChange=[{"barCode":"999847030297"},{"barCode":"999847451294"},{"barCode":"999848565640"}]&_=1571731634332

в браузере этот запрос ничего не дает
вот как выудить этот json?
...
Рейтинг: 0 / 0
Парсинг динамического контента
    #39879787
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asv79,
надо смотреть тип запроса, скорее всего это POST. Плюс, скорее всего, куки. Так что следующий этап - SoapUI и отладка всех этих запросов.
Есть еще вариант - поуправлять браузером и брать из него готовое. Но это в ветку C#
...
Рейтинг: 0 / 0
Парсинг динамического контента
    #39879791
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79вот как выудить этот json?повторить запрос уже от себя?
...
Рейтинг: 0 / 0
Парсинг динамического контента
    #39879794
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79,
Ты копай давай. Что ты описываешь действия твоей руки)).
...
Рейтинг: 0 / 0
Парсинг динамического контента
    #39879798
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да вообщем нашел я запрос

он отдает мне json
вот запрос

https://s.stoloto.ru/service/bingo/ruslotto/change?callback=jQuery171010123521258160095_1571660062730&numbersToChange=%5B%7B%22barCode%22%3A%22999847030297%22%7D%2C%7B%22barCode%22%3A%22999847451294%22%7D%2C%7B%22barCode%22%3A%22999848565640%22%7D%5D&_=1571733298168]https://s.stoloto.ru/service/bingo/ruslotto/change?callback=jQuery171010123521258160095_1571660062730&numbersToChange=[{"barCode":"999847030297"},{"barCode":"999847451294"},{"barCode":"999848565640"}]&_=1571733298168

причем самое интересное я думал он будет давать те же билеты,но нет-дает всегда новые
но почему то запрос нужно отправлять два раза
сначала приходит статус -pending
еще раз запрос отправляешь -прилетает json с билетами

вообщем теперь уже можно это дело автоматизировать )
...
Рейтинг: 0 / 0
Парсинг динамического контента
    #39879800
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanraasv79,
надо смотреть тип запроса, скорее всего это POST. Плюс, скорее всего, куки. Так что следующий этап - SoapUI и отладка всех этих запросов.
Есть еще вариант - поуправлять браузером и брать из него готовое. Но это в ветку C#
не нормально - нашел я этот запрос,получаю json
плохо что запрос нужно два раза делать


пс.я вот думаю я по шапке то не получу от СТОЛОТО? ведь я могу их сервер положить если сделаю выборку например 100 000 билетов?)
...
Рейтинг: 0 / 0
Парсинг динамического контента
    #39879807
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79,
Конечно вмешательство незаконно.
За тобой уже выехали.
Удачи!
...
Рейтинг: 0 / 0
Парсинг динамического контента
    #39879813
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,
)))
...
Рейтинг: 0 / 0
Парсинг динамического контента
    #39879819
olegeos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
phantomjs предлагали?
...
Рейтинг: 0 / 0
Парсинг динамического контента
    #39879822
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegeos,
неа,да уже и не надо
я нашел запрос -получаю json в котром все что мне надо

но есть одна проблема

если я вставлю этот заппрос в браузер - то получаю норм ответ

если через постмен или java code то получаю стус-еррор
...
Рейтинг: 0 / 0
Парсинг динамического контента
    #39879828
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asv79если я вставлю этот заппрос в браузер - то получаю норм ответ
если через постмен или java code то получаю стус-еррор
Посмотри в браузере - наверняка там еще заголовки/куки передаются
...
Рейтинг: 0 / 0
Парсинг динамического контента
    #39879832
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanraasv79если я вставлю этот заппрос в браузер - то получаю норм ответ
если через постмен или java code то получаю стус-еррор
Посмотри в браузере - наверняка там еще заголовки/куки передаются

передается

вот оно
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Cache-Control: no-cache, no-store, must-revalidate
Connection: keep-alive
Content-Length: 64
Content-Type: application/javascript;charset=utf-8
Date: Tue, 22 Oct 2019 09:32:10 GMT
Expires: 0
Last-Modified: Mon, 26 Jul 1997 05:00:00 GMT
Pragma: no-cache
Server: nginx
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Connection: keep-alive
Cookie: K=1571642393849; _ga=GA1.2.555634147.1571642396; _gid=GA1.2.1790512847.1571642396; _ym_uid=1571642396502481532; _ym_d=1571642396; _vwo_uuid_v2=D743B9A20B0FA987CC2E39AC6F7BA09B2|94fca6ec37493d710643e3e05cc3dc6b; __auc=354d77d216ded2fcd7d2e3ebf87; _fbp=fb.1.1571642397269.2005321185; SESSION=3af0ffac-8547-44ae-bebf-2a169b174b6a; ga=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJycyI6WyJDVVNUT01FUiIsIlVTRVIiXSwibG9jIjoicnUiLCJydiI6IlNJVEUiLCJmbiI6ItCh0YLQsNC90LjRgdC70LDQsiIsImRuIjoi0KHRgtCw0L3QuNGB0LvQsNCyIiwic2VnIjo0LCJleHAiOjE1NzE2NTAxMDYsInZpcCI6ZmFsc2UsImFwbCI6MjAwLCJtbCI6ImFzdl83OUBpbmJveC5ydSIsInN0IjoiUkVHSVNURVJFRCIsIm9yIjoiU1RPTE9UTyIsImMiOiJSVSIsImFwdCI6IllFUyIsImYiOnRydWUsImlwIjoiMTQ0LjM2LjI0MS4xMzEiLCJpIjoyMDgyMjA4NTA4LCJmcHQiOiJCT05VUyxXQUxMRVQiLCJsIjoiYXN2Xzc5QGluYm94LnJ1IiwibSI6Ijc5MjA2OTA4ODk2IiwidmQiOmZhbHNlLCJvIjp0cnVlLCJyZCI6MTU0NjM0MzY3MjU3NiwidyI6MTU4MzE4MDE0NjQ4LCJzY3BvIjpmYWxzZSwiZmJ5IjoyMDE5fQ.6gGR2DvDjMGbrWW0jJDBF3sArsvvk78aW5KbgM8Itmw
Host: s.stoloto.ru
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36



и что делать
...
Рейтинг: 0 / 0
Парсинг динамического контента
    #39879835
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79ivanraпропущено...

Посмотри в браузере - наверняка там еще заголовки/куки передаются

передается

вот оно
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Cache-Control: no-cache, no-store, must-revalidate
Connection: keep-alive
Content-Length: 64
Content-Type: application/javascript;charset=utf-8
Date: Tue, 22 Oct 2019 09:32:10 GMT
Expires: 0
Last-Modified: Mon, 26 Jul 1997 05:00:00 GMT
Pragma: no-cache
Server: nginx
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Connection: keep-alive
Cookie: K=1571642393849; _ga=GA1.2.555634147.1571642396; _gid=GA1.2.1790512847.1571642396; _ym_uid=1571642396502481532; _ym_d=1571642396; _vwo_uuid_v2=D743B9A20B0FA987CC2E39AC6F7BA09B2|94fca6ec37493d710643e3e05cc3dc6b; __auc=354d77d216ded2fcd7d2e3ebf87; _fbp=fb.1.1571642397269.2005321185; SESSION=3af0ffac-8547-44ae-bebf-2a169b174b6a; ga=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJycyI6WyJDVVNUT01FUiIsIlVTRVIiXSwibG9jIjoicnUiLCJydiI6IlNJVEUiLCJmbiI6ItCh0YLQsNC90LjRgdC70LDQsiIsImRuIjoi0KHRgtCw0L3QuNGB0LvQsNCyIiwic2VnIjo0LCJleHAiOjE1NzE2NTAxMDYsInZpcCI6ZmFsc2UsImFwbCI6MjAwLCJtbCI6ImFzdl83OUBpbmJveC5ydSIsInN0IjoiUkVHSVNURVJFRCIsIm9yIjoiU1RPTE9UTyIsImMiOiJSVSIsImFwdCI6IllFUyIsImYiOnRydWUsImlwIjoiMTQ0LjM2LjI0MS4xMzEiLCJpIjoyMDgyMjA4NTA4LCJmcHQiOiJCT05VUyxXQUxMRVQiLCJsIjoiYXN2Xzc5QGluYm94LnJ1IiwibSI6Ijc5MjA2OTA4ODk2IiwidmQiOmZhbHNlLCJvIjp0cnVlLCJyZCI6MTU0NjM0MzY3MjU3NiwidyI6MTU4MzE4MDE0NjQ4LCJzY3BvIjpmYWxzZSwiZmJ5IjoyMDE5fQ.6gGR2DvDjMGbrWW0jJDBF3sArsvvk78aW5KbgM8Itmw
Host: s.stoloto.ru
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36



и что делать
Очевидно передавать те же заголовки и куки.
...
Рейтинг: 0 / 0
Парсинг динамического контента
    #39879839
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно взять готовый куки хендлер, но для тебя скорее всего важен только SESSION - его можно обработать и вручную. Пока можешь просто скопировать куки-заголовок из браузера в код и посмотреть, что этого достаточно (браузер при этом не закрывай)
...
Рейтинг: 0 / 0
Парсинг динамического контента
    #39879865
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanraможно взять готовый куки хендлер, но для тебя скорее всего важен только SESSION - его можно обработать и вручную. Пока можешь просто скопировать куки-заголовок из браузера в код и посмотреть, что этого достаточно (браузер при этом не закрывай)
спсибо дружище) все заработало )
...
Рейтинг: 0 / 0
25 сообщений из 110, страница 1 из 5
Форумы / Java [игнор отключен] [закрыт для гостей] / Парсинг динамического контента
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]