Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Каким образом можно отрабатывать JS при парсинге PHP?
цитата
01/02/18 в 10:29
 Lexikon
Некоторые сайты отдают контент через JS и если у меня в браузере он отключен, то контент я не вижу, глянул сохраненную копию страниц в гугле, там тоже этот контент не отображается.
Как то можно при парсинге выполнять JS чтоб все элементы появлялись в DOM?
цитата
01/02/18 в 10:41
 mescalito
Selenium WebDriver
цитата
01/02/18 в 23:11
 Oswell E. Spencer
PhantomJS или любой headless браузер. Selenium WebDriver это все таки из другой оперы немного...

НО! это все геморой и чаще можно обойтись без этого, просто смотри откуда js тянет контент и ходи сразу туда нормальным curl. js же не из воздуха контент подгружает.
цитата
02/02/18 в 14:54
 Lexikon

За PhantomJS тоже прочитал и за то, что нужно отследить откуда js тянет данные.
И тут само собой возникает вопрос, а как можно отследить откуда JS тянет контент?
Когда просматриваешь код страницы, там до кучи разного JS кода, как встроенного:
<script>JS CODE</script>, так и подключенные файлы code.js. Как правило в подключенных файлах кроме того, что всё сжато, т.е. без переносов строк и т.п. так еще и кода большое кол-во.
цитата
02/02/18 в 15:41
 Mika
Lexikon писал:
И тут само собой возникает вопрос, а как можно отследить откуда JS тянет контент?

Например, тем же phantomjs
http://phantomjs.org/network-monitoring.html
Но вообще, сдается мне, что имелось ввиду, когда парсишь конкретный сайт, то ты сам смотришь в той же developer console что откуда тянется и парсишь соответствующий источник. Например, если js тянет несколько json файлов, и потом на их основе строит DOM, то вместо парсинга DOM, проще извлечь нужные данные из оригинальных json файлов.
цитата
02/02/18 в 16:02
 Lexikon
Mika писал:
Но вообще, сдается мне, что имелось ввиду, когда парсишь конкретный сайт, то ты сам смотришь в той же developer console что откуда тянется и парсишь соответствующий источник. Например, если js тянет несколько json файлов, и потом на их основе строит DOM, то вместо парсинга DOM, проще извлечь нужные данные из оригинальных json файлов.

Я как раз так это и понял.
Речь о developer console, которая доступна в функционале браузера? Если да, то как там можно глянуть, что и откуда тянется? Что в хроме, опере, и лисе там много различных вкладок и я просто не в курсе, где там можно мосмотреть, что и откуда тянется.
цитата
02/02/18 в 16:27
 Mika
Lexikon писал:
Если да, то как там можно глянуть, что и откуда тянется?

Если в Хроме (хотя в ФФ тоже насколько я помню точно так же), то открываешь консоль разработчика (ctrl-shift-j), переходишь во вкладку Network (или "Сеть" в русской локализации), и там будет лог что и куда отправлялось и принималось. Для удобства можно поставить галочку на preserve log (в этом случае лог не будет стираться при открытии новой страницы). Ну и там же разные полезные фичи есть, типа отфильтровать по типу контента, отключить кэш, включить троттлинг.
цитата
02/02/18 в 16:30
 Lexikon
Благодарю! Будем разбираться.
цитата
02/02/18 в 17:05
 Oswell E. Spencer
Mika писал:

Но вообще, сдается мне, что имелось ввиду, когда парсишь конкретный сайт, то ты сам смотришь в той же developer console что откуда тянется и парсишь соответствующий источник. Например, если js тянет несколько json файлов, и потом на их основе строит DOM, то вместо парсинга DOM, проще извлечь нужные данные из оригинальных json файлов.



Exactly! это решает 90% проблем, исключая всякие хитрые защиты от парсинга ссылок на видео например, где ссылка просто генерится, тогда да, нужно "выполнить" js код.
цитата
04/02/18 в 22:16
 Lexikon
Mika писал:
Если в Хроме (хотя в ФФ тоже насколько я помню точно так же), то открываешь консоль разработчика (ctrl-shift-j), переходишь во вкладку Network (или "Сеть" в русской локализации), и там будет лог что и куда отправлялось и принималось. Для удобства можно поставить галочку на preserve log (в этом случае лог не будет стираться при открытии новой страницы). Ну и там же разные полезные фичи есть, типа отфильтровать по типу контента, отключить кэш, включить троттлинг.

smail54.gif
Спасибо! Оказывается там очень много полезного зарыто, что не видно на странице отображения контента!
цитата
06/02/18 в 11:08
 LesliePierce
сначала берешь SlimerJS (он визуальный как Selenium), берешь либу CasperJS. пишешь код, отлаживаешь, смотришь наглядно. потом переключаешь SlimerJS на PhantomJS (он безголовый, быстрее раз в 10).


Эта страница в полной версии