Подключение php скриптов к шаблону вывода (макрос PHP_SCRIPT)

К шаблону вывода можно подключить любой php-скрипт, которому будут отправляться POST-данные при парсинге контента. С помощью макроса шаблона вывода PHP_SCRIPT вы можете отправить любой код (или текст) скрипту и получить от него ответ в виде обработанного кода. Также можно добавлять данные в MySQL-базу на сервере.

Обратите внимание на опции макросов PHP_SCRIPT

Content Downloader

В опциях можно выбрать библиотеку для отправки запросов, рекомендуется использовать Clever Internet Suite (так как она более продвинутая). Библиотеку INDY в PHP_SCRIPT мы решили оставить. Ее использование отличается в написании параметров макроса. Хелп по использованию макросов PHP_SCRIPT с библиотекой INDY ниже в спойлере.

Хелп по использованию макросов PHP_SCRIPT с библиотекой INDY

Данные в скрипт отправляются методом POST. Имена POST-параметров вы указываете сами. Если вы хотите отправить в скрипт несколько параметров, то разделяйте переносом строки, например:

1
2
3
data=123
title=567
img=777.jpg

ВАЖНО: Отправляемые МНОГОСТРОЧНЫЕ значения параметров должны браться в [FIELDVALUE]…[/FIELDVALUE]

1
2
<PHP_SCRIPT=http://site.ru/script.php>data=[FIELDVALUE]<CD_GRAN_1!>[/FIELDVALUE]
data2=[FIELDVALUE]<CD_GRAN_2!>[/FIELDVALUE]</PHP_SCRIPT>

Отправить POST-данные, как текст можно с помощью параметра [TEXTDATA]

1
<PHP_SCRIPT=http://site.ru/script.php>[TEXTDATA]<CD_GRAN_1!>[/TEXTDATA]</PHP_SCRIPT>

Также можно отправлять файлы с локального диска (добавив к началу нужной строки оператор [SUBMITFILE])

1
2
3
<PHP_SCRIPT=http://site.ru/script.php>data=[FIELDVALUE]<CD_GRAN_1!>[/FIELDVALUE]
data2=[FIELDVALUE]<CD_GRAN_2!>[/FIELDVALUE]
[SUBMITFILE]file=C:\\File.txt</PHP_SCRIPT>

В шаблоне вывода может быть сколько угодно много подключенных скриптов.

Простой пример PHP-скрипта, который получит данные из POST-параметра data и вернет их в программу:

1
2
3
<?php
echo $_POST["data"];
?>

Для того, чтобы программа приняла текст от скрипта в UTF-8 кодировке, необходимо поместить [UTF-8] в конец ссылки на скрипт:

1
2
<PHP_SCRIPT=http://site.ru/script.php[UTF-8]>data=[FIELDVALUE]<CD_GRAN_1!>[/FIELDVALUE]
data2=[FIELDVALUE]<CD_GRAN_2!>[/FIELDVALUE]</PHP_SCRIPT>

Как передать HTTP-заголовки в PHP_SCRIPT (по умолчанию они берутся из поля custom headers в ctrl+h):

HTTP-заголовки указываются в параметре HEADERS:

1
2
3
<PHP_SCRIPT=http://site.ru/script.php[UTF-8]><HEADERS>Accept-Encoding: UTFX
Accept: HTML</HEADERS>data=[FIELDVALUE]<CD_GRAN_1!>[/FIELDVALUE]
data2=[FIELDVALUE]<CD_GRAN_2!>[/FIELDVALUE]</PHP_SCRIPT>

Примечание 1: В дереве макросов шаблона вывода (ctrl+2) вы можете найти множество PHP_SCRIPT: PHP_SCRIPT_0, PHP_SCRIPT, PHP_SCRIPT_2, PHP_SCRIPT_3, PHP_SCRIPT_4, PHP_SCRIPT_5. Все они работают одинаково, только выполняются в разное время (в определенном порядке). Зная это вы можете вызывать, например, макрос PHP_SCRIPT внутри макроса PHP_SCRIPT_2 (так как сначала выполнится PHP_SCRIPT, и только потом PHP_SCRIPT_2).

Примечание 2: Если вы используете PHP_SCRIPT для импорта данных в базу MySQL, не забывайте экранировать спец символы в отправленных данных функцией mysql_real_escape_string (http://sbfactory.ru/cd/?p=419):

1
2
3
4
5
<?php
...
$_POST[id] = mysql_real_escape_string($_POST[id]); #экранируем специальные символы в полученных от Content Downloader POST-данных id
...
?>

Примечание 3: Если при работе макроса вы получаете ошибку запроса типа:

1
2
3
HTTP/1.1 400 Bad Request
или
The unknown error was occured: 80090326

Попробуйте поставить другие настройки HTTPS для библиотеки Clever Internet Suite (она используется для отправки POST-запросов в макросах <PHP_SCRIPT>

Content Downloader

Также учтите, что для загрузки данных на некоторых сайтах требуется ввести HTTP-заголовки запроса. Как это сделать написано выше. Для получения нужных HTTP-заголовков можно воспользоваться монитором сети в браузере Firefox (shift+ctrl+e).

Connect, read timeout, user agent, и custom headers для макросов PHP_SCRIPT берутся из окна настроек HTTP-запросов программы (ctrl+h). Учтите, что сменить user agent (и другие HTTP-заголовки) для макросов PHP_SCRIPT можно с помощью параметра <HEADERS> (читайте про <HEADERS> выше). Например, для отмены применения custom headers из окна ctrl+h достаточно указать пустой или заполненный параметр <HEADERS>, а для смены user agent нужно просто указать в параметре <HEADERS> строчку с новым user agent.

1 Star2 Stars3 Stars4 Stars5 Stars (оценок: 14, средний балл: 5,00)
Загрузка...
Автор: admin, 23 января 2011
Рубрики: Парсинг
Метки: ,
26 комментариев к сообщению: “Подключение php скриптов к шаблону вывода (макрос PHP_SCRIPT)”
  1. Виталий:

    Немного не понятно (я далек от программирования :(). Нельзя ли привести конкретный пример конкретного скрипта. Что-нибудь самое простое, например, сделать, чтобы из урла страницы остался только домен.
    В шаблоне, насколько я понимаю, это будет выглядеть так:
    data=
    Сам скрипт выглядит так, вроде:

  2. admin:

    Дописал в конец поста пример скрипта (данный скрипт конвертирует отправленный код из url кодировки в «нормальную»).

  3. Виталий:

    Спасибо, становится понятней. Если ссылку ставить на скрипт на Денвере (вообще локальном сервере) будет работать?

  4. Ilya:

    Все работает… Спасибо автору за работу.

  5. Alex:

    Может и подключаются очень просто, но для меня, не знакомого с php, это совсем не «очень просто». У меня есть предложение: сделать страницу с скриптами, на которую любой мог бы опубликовать свои скрипты. А остальные могли бы найти нужный. Я например, нуждаюсь в скрипте обрезания n кол. знаков от начала парсинга границы. Может кто подскажет? Здесь нашел что то по теме, но надо как то переделать что бы не пробелы удирал скрипт, а знаки. http://www.e-inform.ru/php_str_obrez.php

  6. тоже нужно обрезать каждое слова до первой буквы

  7. Yumin:

    А как боретесь с кодировкой? У меня вся информация по пхп скриптам в кракозякбрах выводиться в csv файле.

  8. zilon:

    у меня тоже проблема с кодировкой при переводе статей. Скрипт сам по себе, отдаёт переведённый текст, в нормальной кодировке, а после подключения к CD получаются краказябры 🙁

  9. Да уж, помню времена, когда файлик с 10 строками кода ПХП был для меня программой, и я не знал что есть что:)
    Вообщем так, ребята. Кому нужна помощь по ПХП — обращайтесь, помогу за определенную плату.
    627-641-940 — це асько, пишите.
    Если интересует, предоставлю в аренду свой хостинг с размещением на нем Ваших скриптов.

  10. Поделитесь рабочим скриптом переводчика — отблагодарю!!!

  11. Татьяна:

    Клевая вещь! Очень помогает при парсинге! Разработчику спасибо за нее!

  12. гость:

    PHP_SCRIPT не поддерживает работу через прокси, можно добавить такую поддержку? Для примера, на mosgid.ru загрузка телефонов имеет лимит для одного адреса, поэтому нужно через прокси заходить. Сами страницы загружаются через прокси, а телефоны нет.

    • admin:

      Постараюсь сделать на следующей недели. Обещать не буду.
      Спасибо!

    • admin:

      Content Downloader X версии 10.88 (19.04.2014):

      Обновление по просьбе клиента

      — Макросы шаблона вывода PHP_SCRIPT теперь поддерживают прокси (не SOCKS, при условии выбранной библиотеки INDY в ctrl+h);
      — Добавлены кнопки вызова редактора поиск-замены для фильтров ссылок и для списков ссылок сканера сайтов;
      — Несколько других доработок.

      • shtrek:

        А можно ли выключить вот эту замечательную фичу как-нибудь? Мой php, почему-то, не обрабатывает запросы через прокси, а включается прокси лишь глобально.
        Ну, или можно коротенький совет по устранению досадного недостатка моего php — что проще.
        Продублирую на форум.

        • admin:

          Content Downloader X версии 10.9950 (04.07.2014):

          Обновление по просьбе клиента

          — Теперь можно отдельно включать (ctrl+r) использование прокси для макросов шаблона вывода PHP_SCRIPT и GETMORECONTENT.

  13. гость:

    [DATAENCODE] в актуальной версии не работает, программа так и отправляет это на скрипт

  14. Виталий:

    немного не понятно про скрипт-переводчик с англ на рус. скрипт надо установить у себя на серваке и уже постом отправлять данные из CD?

Написать комментарий

Вы должны войти чтобы добавить комментарий.

Последние статьи

css.php