При парсинге контента иногда требуется подгружать дополнительные данные со сторонних URL. Например, вы парсите товары интернет магазинов и опции для каждого товара подгружаются с дополнительных URL. Дополнительные данные можно подгружать макросами шаблона вывода GETMORECONTENT и PHP_SCRIPT, но, если это сделать обычным методом, то ответ от сайта вставится в шаблон вывода и вы не сможете задавать границы парсинга для подгруженного кода. Для таких задач и существует макрос [APPENDDOCSOURCE]. Если в него добавить макросы подгрузки данных, то сначала будут взяты границы парсинга из основного кода WEB-документа, затем выполнятся макросы подгрузки данных в [APPENDDOCSOURCE]…[/APPENDDOCSOURCE], после этого подгруженный код добавится к коду основного документа и вновь будут браться границы парсинга уже с основным кодом WEB-документа + подгруженным.
1) Берется URL из списка ссылок и загружается по нему код основного WEB-документа
2) Вычисляются границы парсинга
3) Срабатывают макросы для подгрузки дополнительных данных, которые расположены в [APPENDDOCSOURCE]…[/APPENDDOCSOURCE] (остальная часть шаблона вывода игнорируется)
4) К коду основного документа добавляется подгруженный с дополнительных адресов код
5) Заново вычисляются границы парсинга уже из основного + подгруженного кода
6) Далее срабатывают все функции и макросы уже в обычном порядке
Код, подгруженный в секции [APPENDDOCSOURCE]…[/APPENDDOCSOURCE] добавляется к коду основного документа следующим образом:
1 2 3 4 | Основной код [DOCSOURCEAPPENDED] Подгруженный код [/DOCSOURCEAPPENDED] |
Примечание: В редком случае при задании границ парсинга могут быть проблемы с русскими буквами, когда кодировка основного документа есть ANSI, а подгружаемого UTF-8 (так как дозаписанные UTF-8 данные в ANSI файл кеша потеряются). При парсинге (не при задании границ парсинга) с этим проблем не будет (только перед парсингом очистите кеш всех документов через контекстное меню списка ссылок главного окна программы).
Для того, чтобы вы могли задавать границы парсинга с подгруженным кодом сначала его нужно закешировать. Для этого выполните предпросмотр результатов парсинга документа (с настроенными макросами подгрузки в [APPENDDOCSOURCE]). Также убедитесь, что у вас включено кеширование WEB-документов. При парсинге (не при предпросмотре, “кеширование” будет происходить автоматически)!
Примечание:
В кеш подгруженные данные записываются только 1 раз. И если в кеше уже есть [DOCSOURCEAPPENDED], то макрос [APPENDDOCSOURCE] выполняться не будет. Для перезаписи кеша пользуйтесь функцией выполнения предпросмотра с предварительной очисткой кеша выбранного документа (F10).
Внутри [APPENDDOCSOURCE]…[/APPENDDOCSOURCE] работают следующие макросы (срабатывают в перечисленном порядке):
1) макросы границ парсинга
2) [DOCSOURCE]
3) <CD_DOCURL!>
4) [PARAM]
5) [COOKIES]
6) [CUSTOMHEADERS]
7) [FILE]
8) <PHP_SCRIPT_0>
9) [VAR]
10) [CD_DATE]
11) [CHECKENTRY]
12) [REPLACE]
13) [CHECKEDNTRY2]
14) <GETMORECONTENT>
15) [BEFORE_IMG_REPLACE]
16) <PHP_SCRIPT>
17) [FINAL_REPLACE]
Далее файл проекта настраивается обычным образом.
Всем спасибо!