Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 01/02/18 в 10:29 |
Некоторые сайты отдают контент через JS и если у меня в браузере он отключен, то контент я не вижу, глянул сохраненную копию страниц в гугле, там тоже этот контент не отображается.
Как то можно при парсинге выполнять JS чтоб все элементы появлялись в DOM?
|
|
|
|
С нами с 11.08.06
Сообщения: 400
Рейтинг: 208
|
Добавлено: 01/02/18 в 10:41 |
Selenium WebDriver
|
|
|
|
+
С нами с 09.05.17
Сообщения: 661
Рейтинг: 586
|
Добавлено: 01/02/18 в 23:11 |
PhantomJS или любой headless браузер. Selenium WebDriver это все таки из другой оперы немного...
НО! это все геморой и чаще можно обойтись без этого, просто смотри откуда js тянет контент и ходи сразу туда нормальным curl. js же не из воздуха контент подгружает.
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 02/02/18 в 14:54 |
За PhantomJS тоже прочитал и за то, что нужно отследить откуда js тянет данные.
И тут само собой возникает вопрос, а как можно отследить откуда JS тянет контент?
Когда просматриваешь код страницы, там до кучи разного JS кода, как встроенного:
<script>JS CODE</script>, так и подключенные файлы code.js. Как правило в подключенных файлах кроме того, что всё сжато, т.е. без переносов строк и т.п. так еще и кода большое кол-во.
|
|
|
|
С нами с 18.10.02
Сообщения: 4165
Рейтинг: 3365
|
Добавлено: 02/02/18 в 15:41 |
Lexikon писал: | И тут само собой возникает вопрос, а как можно отследить откуда JS тянет контент? |
Например, тем же phantomjs
http://phantomjs.org/network-monitoring.html
Но вообще, сдается мне, что имелось ввиду, когда парсишь конкретный сайт, то ты сам смотришь в той же developer console что откуда тянется и парсишь соответствующий источник. Например, если js тянет несколько json файлов, и потом на их основе строит DOM, то вместо парсинга DOM, проще извлечь нужные данные из оригинальных json файлов.
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 02/02/18 в 16:02 |
Mika писал: | Но вообще, сдается мне, что имелось ввиду, когда парсишь конкретный сайт, то ты сам смотришь в той же developer console что откуда тянется и парсишь соответствующий источник. Например, если js тянет несколько json файлов, и потом на их основе строит DOM, то вместо парсинга DOM, проще извлечь нужные данные из оригинальных json файлов. |
Я как раз так это и понял.
Речь о developer console, которая доступна в функционале браузера? Если да, то как там можно глянуть, что и откуда тянется? Что в хроме, опере, и лисе там много различных вкладок и я просто не в курсе, где там можно мосмотреть, что и откуда тянется.
|
|
|
|
С нами с 18.10.02
Сообщения: 4165
Рейтинг: 3365
|
Добавлено: 02/02/18 в 16:27 |
Lexikon писал: | Если да, то как там можно глянуть, что и откуда тянется? |
Если в Хроме (хотя в ФФ тоже насколько я помню точно так же), то открываешь консоль разработчика (ctrl-shift-j), переходишь во вкладку Network (или "Сеть" в русской локализации), и там будет лог что и куда отправлялось и принималось. Для удобства можно поставить галочку на preserve log (в этом случае лог не будет стираться при открытии новой страницы). Ну и там же разные полезные фичи есть, типа отфильтровать по типу контента, отключить кэш, включить троттлинг.
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 02/02/18 в 16:30 |
Благодарю! Будем разбираться.
|
|
|
|
+
С нами с 09.05.17
Сообщения: 661
Рейтинг: 586
|
Добавлено: 02/02/18 в 17:05 |
Mika писал: |
Но вообще, сдается мне, что имелось ввиду, когда парсишь конкретный сайт, то ты сам смотришь в той же developer console что откуда тянется и парсишь соответствующий источник. Например, если js тянет несколько json файлов, и потом на их основе строит DOM, то вместо парсинга DOM, проще извлечь нужные данные из оригинальных json файлов. |
Exactly! это решает 90% проблем, исключая всякие хитрые защиты от парсинга ссылок на видео например, где ссылка просто генерится, тогда да, нужно "выполнить" js код.
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 04/02/18 в 22:16 |
Mika писал: | Если в Хроме (хотя в ФФ тоже насколько я помню точно так же), то открываешь консоль разработчика (ctrl-shift-j), переходишь во вкладку Network (или "Сеть" в русской локализации), и там будет лог что и куда отправлялось и принималось. Для удобства можно поставить галочку на preserve log (в этом случае лог не будет стираться при открытии новой страницы). Ну и там же разные полезные фичи есть, типа отфильтровать по типу контента, отключить кэш, включить троттлинг. |
Спасибо! Оказывается там очень много полезного зарыто, что не видно на странице отображения контента!
|
|
|
|
С нами с 05.01.18
Сообщения: 4
Рейтинг: 1
|
Добавлено: 06/02/18 в 11:08 |
сначала берешь SlimerJS (он визуальный как Selenium), берешь либу CasperJS. пишешь код, отлаживаешь, смотришь наглядно. потом переключаешь SlimerJS на PhantomJS (он безголовый, быстрее раз в 10).
|
|
|
|