Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Парсинг динамического контента / 25 сообщений из 110, страница 1 из 5
22.10.2019, 10:54
    #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
22.10.2019, 11:01
    #39879754
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг динамического контента
в любом браузере есть интструменты разработчика. Посмотри, какие запросы идут на сервер, и выполни их сам. Скорее всего там будет json контент, который тебе и нужен
...
Рейтинг: 0 / 0
22.10.2019, 11:09
    #39879760
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг динамического контента
asv79естественно значений нет - так как они вставляются туда скриптомкод js на разные события (перемещение мышки) изменяет DOM.
Поэтому если не идет инфа на сервер, то достать невозможно. Ну или очень сложно.
Поэтому сам не делай динамичные сайты (одного окна).
...
Рейтинг: 0 / 0
22.10.2019, 11:13
    #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
22.10.2019, 11:14
    #39879765
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг динамического контента
PetroNotC Sharpasv79естественно значений нет - так как они вставляются туда скриптомкод js на разные события (перемещение мышки) изменяет DOM.
Поэтому если не идет инфа на сервер, то достать невозможно. Ну или очень сложно.
Поэтому сам не делай динамичные сайты (одного окна).

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

В данном случае номер билета врядли генерится на клиенте, он 100% приходит с сервера, либо в json запросе либо в теге скрипт. Поэтому достаточно узнать где он лжеит и просто выдрать оттуда
да я думаю это так и есть-а вот как узнать?)
...
Рейтинг: 0 / 0
22.10.2019, 11:18
    #39879772
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг динамического контента
asv79,
Хром, F12 - найти где в коде изменяется div
- Elements
- ПКМ на div
- Break on - Attribute modifications
...
Рейтинг: 0 / 0
22.10.2019, 11:19
    #39879773
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг динамического контента
asv79как узнать?работать за JS прогера. Ты же не хотел всего месяц назад)))
...
Рейтинг: 0 / 0
22.10.2019, 11:31
    #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
22.10.2019, 11:36
    #39879787
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг динамического контента
asv79,
надо смотреть тип запроса, скорее всего это POST. Плюс, скорее всего, куки. Так что следующий этап - SoapUI и отладка всех этих запросов.
Есть еще вариант - поуправлять браузером и брать из него готовое. Но это в ветку C#
...
Рейтинг: 0 / 0
22.10.2019, 11:41
    #39879791
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг динамического контента
asv79вот как выудить этот json?повторить запрос уже от себя?
...
Рейтинг: 0 / 0
22.10.2019, 11:43
    #39879794
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг динамического контента
asv79,
Ты копай давай. Что ты описываешь действия твоей руки)).
...
Рейтинг: 0 / 0
22.10.2019, 11:49
    #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
22.10.2019, 11:51
    #39879800
asv79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг динамического контента
ivanraasv79,
надо смотреть тип запроса, скорее всего это POST. Плюс, скорее всего, куки. Так что следующий этап - SoapUI и отладка всех этих запросов.
Есть еще вариант - поуправлять браузером и брать из него готовое. Но это в ветку C#
не нормально - нашел я этот запрос,получаю json
плохо что запрос нужно два раза делать


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

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

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

если через постмен или java code то получаю стус-еррор
...
Рейтинг: 0 / 0
22.10.2019, 12:28
    #39879828
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг динамического контента
asv79если я вставлю этот заппрос в браузер - то получаю норм ответ
если через постмен или java code то получаю стус-еррор
Посмотри в браузере - наверняка там еще заголовки/куки передаются
...
Рейтинг: 0 / 0
22.10.2019, 12:34
    #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
22.10.2019, 12:37
    #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
22.10.2019, 12:44
    #39879839
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг динамического контента
можно взять готовый куки хендлер, но для тебя скорее всего важен только SESSION - его можно обработать и вручную. Пока можешь просто скопировать куки-заголовок из браузера в код и посмотреть, что этого достаточно (браузер при этом не закрывай)
...
Рейтинг: 0 / 0
22.10.2019, 13:03
    #39879865
asv79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг динамического контента
ivanraможно взять готовый куки хендлер, но для тебя скорее всего важен только SESSION - его можно обработать и вручную. Пока можешь просто скопировать куки-заголовок из браузера в код и посмотреть, что этого достаточно (браузер при этом не закрывай)
спсибо дружище) все заработало )
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Парсинг динамического контента / 25 сообщений из 110, страница 1 из 5
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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