Имя: Пароль:
1C
1С v8
парсинг сайта без изменения url
,
0 xmk_okda
 
13.01.17
10:29
Всем привет. Есть сайт, при прогулке по нему не меняется адрес в адресной строке. Я так понял, что данные подгружаются ajax'ом. Большая проблема еще в том, что для входа на сайт в нем обязательно еще нужно залогиниться.  
Подскажите пожалуйста, что можно почитать по данной теме и вообще как это работает.
1 Мимохожий Однако
 
13.01.17
10:30
см Я
2 Вафель
 
13.01.17
10:31
в хапросы вставляй нужные куки.
Для определения кук юзай фидлер
3 xmk_okda
 
13.01.17
10:32
(1) смотрел G. Инфы много, не могу собрать воедино
4 Мимохожий Однако
 
13.01.17
10:34
(3) Бывает...
5 Fragster
 
гуру
13.01.17
10:49
(0) такие сайты делают только мудаки
6 spock
 
13.01.17
10:49
(0) Охота сделать самостоятельно или есть бюджет под это?
7 spock
 
13.01.17
10:56
(5) почти весь интернет на таких сайтах сейчас. Время статики давно прошло.
8 trdm
 
13.01.17
11:06
Да, как-то сайт с анекдотами распарсить пытался.
эта херня реально раздражает. особенно гугловский обфускатор.
9 Fragster
 
гуру
13.01.17
11:50
(7) нет, в нормальных сайтах меняется URI, как минимум после #, как максимум - подставляется нормальный действующий урл без перезагрузки страницы.
10 spock
 
13.01.17
11:55
(9) Добро пожаловать в современный мир!
11 Fragster
 
гуру
13.01.17
11:56
(10) всякие яметрики и юлмарты - современные?
12 xmk_okda
 
13.01.17
13:42
(6) сам)
13 Cool_Profi
 
13.01.17
13:43
(5) Кстати... При нажатии плюсика в списке тем на мисте урл тоже не меняется...
Вывод? ))))
14 Serginio1
 
13.01.17
13:49
15 xmk_okda
 
13.01.17
14:01
(14) спасибо
16 Serginio1
 
13.01.17
14:08
17 mistеr
 
13.01.17
14:16
(0) Логин это по любому HTTP запрос, как и подгрузка данных.

Запросы и куки смотришь в браузере (инструменты разработчика), постом повторяешь в коде в той же последовательности.

P.S. Если там что-то ценное и сайт специально препятствует парсингу, ковыряться будешь долго. Узнай, может там есть API. Может платный.
18 mistеr
 
13.01.17
14:17
(17) "постом" -> "потом"
19 spock
 
13.01.17
15:05
(12) Тогда запасаемся терпением и:
- python (мой совет), хотя можно на многом другом;
- selenium: http://www.seleniumhq.org/ ;
- chrome (интерактивный режим, будет открываться хром и повторять действия пользователя) или phantomjs (чисто программный режим);
- немного кода.

По шагам: Берем сайт, смотрим его кишки (в Хроме через Ctrl+Shift+I), ищем нужные последовательности тегов (через Ctrl+Shift+C, встал на нужный элемент, в консоли открылся тот участок кода, который отвечает за это место), там же можно Copy XPath or Copy Selector, пишем чуток кода, вставляем скопированное, радуемся.

Все не сложно :)

А почему так заморочено, спросите вы? А потому что современный web enterprise работает на динамике. Т.е. html код рисуется на лету. Или по другому - по наступлении какого-либо события (в рун-тайм) изменяется DOM.
20 spock
 
13.01.17
15:13
+19 и самое главное - через selenium + chrome/phantomejs эмулируется движок браузера. Т.е. отрабатывает javascript в коде страницы, как будто живой человек открыл через браузер сайт.
21 Вафель
 
13.01.17
15:18
22 mistеr
 
13.01.17
15:58
(19) >Все не сложно :)

Да уж, не сложно...
В данном случае DOM нам нафиг не нужен, нам нужны только данные.
23 Serginio1
 
13.01.17
16:19
(5) Угу Angular 2 делали дураки?
Single Page Application набирает большую популярность. Кроме того например http://blog.stevensanderson.com/2016/10/04/angular2-template-for-visual-studio/

Может работать и без поддержки JS для сбора статистики.
Можно попробовать отключить использование JS
24 spock
 
13.01.17
16:21
(22) Ещ раз почитай, дом рисуется динамически. Страницу открыл, а тебе еще пол-страницы нарисовалось в доме. И без джавыскрипт этого не получить.
25 Serginio1
 
13.01.17
16:29
(24) Вообще мы можем получить адрес и сами без браузера обращаться за данными.
Либо через код, любо через инструменты разработчика или фиддлер
26 Вафель
 
13.01.17
16:30
(24) главное знать адреса по которым джсон получается
27 spock
 
13.01.17
16:54
(25) Так можно и руками перенести с сайта. Вопрос ведь в реализации инструмента, который в автомате будет подстраиваться под изменения.
28 spock
 
13.01.17
17:01
Ребятишки, а давайте вы про js почитаете, а потом будете опровергать про Джейсон и тд.
29 Serginio1
 
13.01.17
17:14
(28) Спасибо! Я TypeScript ом балуюсь. На самом деле проще разобрать код. И не дожидаться когда DOM построится.
Но это уже на любителя. Из поддержки JS использовал Силениум. Там есть поддержка JQuery для парсинга.
В принципе развивается и Jint https://github.com/sebastienros/jint

Который можно прикрутить к AngleSharp
Давно этим не занимался.
30 spock
 
13.01.17
17:20
(29) Мы может про разные сайты говорим, но мне бывало сложно обфусцированные скрипты разбирать.
31 runoff_runoff
 
13.01.17
17:25
за run как рун в карцер ;-)
32 Вафель
 
13.01.17
17:29
(31) А null как правильно нужно говорить?
33 Serginio1
 
13.01.17
17:40
(30) Ну так или иначе запросы идут через форму. Всегда можно посмотреть какие запросы идут через средства разработчика или фиддлер. Всегда можно распарсить код и посмтреть где какие клики. Понятно, что сайт сайту рознь.

Иногда приходится и Silenium с JQuery использовать
http://www.vcskicks.com/selenium-jquery.php
https://github.com/AcklenAvenue/JQSelenium
34 spock
 
13.01.17
19:11
(33) На секундочку, я не говорю, что есть только мой один единственный путь. Я предложил свой конкретный способ. Каждый выбирает свой дзен. Нравится изучать обфусцированные скрипты? - вперед.
35 Serginio1
 
13.01.17
20:21
(34) Еще раз я могу использовать  Silenium с JQuery в 1С
Там полная поддержка JS
36 Torquader
 
13.01.17
20:22
Нет, а что вам не нравится, если не меняется адрес страницы при изменения на ней ?
Просто, если меняется адрес, то для браузера - это переход, и кто-то может попытаться открыть сразу несколько разных страниц, просто копируя адрес - для некоторых сайтов это оказывается очень даже критично.
А если у вас одна страница и её состояние в Cookie задано, то при повторной загрузке загрузится именно то, что нужно.

P.S. Просто, иначе получается, что можно открыть отдельно корзину интернет-магазина, а отдельно справочник и добавить товар в корзину - и очень редкие магазины сразу перерисуют корзину.