|
парсинг сайта без изменения 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. Просто, иначе получается, что можно открыть отдельно корзину интернет-магазина, а отдельно справочник и добавить товар в корзину - и очень редкие магазины сразу перерисуют корзину. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |