Чем парсить сайт на PHP?

Была задачка распарсить пару страниц сайта.
Я давно не пишу на php, и столкнулся с проблемой выбора библиотеки.
Наиболее популярная по мнению «уважаемых» разрабов была одна старая и вроде бы проверенная временем SimpleHtmlDom — она умела все что мне нужно (манипуляции с DOM). Но не используйте её никогда!
Утечки памяти, невозможно долгое время выполнения даже __destruct, и прочий лютый пипец. Отказался от нее. И ссылку на нее не дам. И если где увидите её упоминание — минусуйте :).

Неплохо себя зарекомендовала nokogiri. Но она не умела нужные DOM манипуляции.
Затем я выяснил, что есть хорошая либа от Symphony2 — Dom Crawler. Неплохо, но не было опять нужных манипуляций с DOM.

Случайно набрел на HtmlPageDom и это надо сказать, дико удобная либа, которая умеет все что надо. Проект построен на базе Symphony2\Dom Crawler и поэтому работает как надо ). Очень рекомендую.

Denwer? XAMMP? Open Server!

Так повелось, что учиться программировать на PHP я начинал в Denwer. Удобный инструментарий, автоматическое подключение хостов и директорий, последние версии PHP. Все продолжалось хорошо, пока я не начал изучать Linux. В нем конечно можно было развернуть и кросплатформенный XAMMP, и просто (на самом деле не всегда просто) настроить по отдельности все необходимые компоненты, PHP, MySQL, PhpMyAdmin, XDebug и прочее.

Дальше хуже — вернувшись на винду, стало тесно. Вручную настраивать сервер и PHP показалось сущей морокой. Админство ради админства меня никогда не прельщало, особенно, когда дело касается разработки. В разработке важно время, которое не хочется терять на конфиг среды.

Денвер застрял на старых версиях PHP, и допиливать руками его было неприемлемо. Выпуск новых версий Денвера застрял, чувствуется на долго. Как я нашел выход из сложившейся ситуации? Читать далее Denwer? XAMMP? Open Server!

Обновление блога

Надолго забросил блог, каюсь. Переезд на новый хостинг затянулся аж на целый год.

За это время я успел поменять работу, и написать статью в другом блоге ). Это статья о настройке простейшей интеграции с ExpertSender:

Инь-ян интеграция: советы разработчикам

Если вы занимаетесь емейл-маркетингом, то обязательно почитайте и другие статьи, не только мою. Этот блог может быть вам весьма полезен.

Как установить средства PHP разработчика в Ubuntu (LAMP, Netbeans,XDebug)

Данное статья затрагивает все Ubuntu-подобные системы, такие как Kubuntu, Debian, Mint и другие.

Установка LAMP, IDE Netbeans и Xdebug

Для начала установим tasksel — пакет, который позволяет устанавливать готовые наборы пакетов для решения определенных задач. Некоторые руководства говорят о том, что он есть в системе. В моей Kubuntu этого пакета не было. И так, ставим:

затем устанавливаем набор LAMP с помощью tasksel:

Таким образом в псевдографическом режиме установятся  Apache 2, PHP5, MySQL, Ruby  и некоторые другие пакеты.

Удалять LAMP, если понадобится, нужно вручную: tasksel служит только для установки.*

В процессе установки MySQL запросит (несколько раз) пароль root для сервера MySQL, который лучше задать сразу, или оставить пустым (что приемлемо для локального сервера разработки):

Для сборки следующих пакетов необходимо установить утилиту make (если ее еще нет), что бы собрались нужные нам в дальнейшем пакеты (в нашем случае Xdebug). У меня ее не было, так что ставлю:

затем необходимо установить php5-dev и php-pear

Из репозитория pecl ставим Xdebug

Затем устанавливаем веб-интерфейс для MySQL — phpMyAdmin, для тех кто не привык к MySQL в консоли:

При установке пакет спросит тип сервера (выбираем Apache 2):

Спросит он и про автонастройку, на что стоит согласиться:

Далее задаем пароль административной учетки (то что задавалось при установке MySQL root) .

и пароль регистрации phpMyAdmin в БД.

Теперь перейдем к установке IDE. Для установки любой сборки Netbeans требуется Java SE JDK. Для данной Java 6 SE JDK. Я устанавливал на другой машине и на более новую версию — 7.

Ставим sun-java6-jdk,

но у меня в стандартных репозиториях его не было, зато был аналог — openjdk-6-jdk

Затем качаем подходящий бинарник  Netbeans (7.1) отсюда.

Запускаем его с правами на выполнение, можно прямо из папки загрузки:*

*В зависимости от системы расположение папки загрузки может отличаться, поэтому я не указываю ее. Так же, если вы ставите другую версию Netbeans обращайте внимание на имя файла.

В процессе установки можно выбрать папку установки и папку с установленной Java. Я ничего менять не стал.

Далее установка не составит труда. На виртуальной машине Kubuntu ставилась минуты 2.

Настройка хоста Apache, php.ini и Netbeans для работы с Xdebug.

Первым делом проверим работоспособность нашей установки.

1. Проверяем работу сервера на localhost. В браузере пишем http://127.0.0.1 или http://localhost. Должна появиться надпись:

Далее настроим директорию (хост) для работы.

Все ниже указанные настройки применимы только к локальной машине, и не в коем случае не должны рабочем web сервере, ввиду отсутствия настроек безопасности!!! Эта тема отдельной статьи.

Вместо стандартного (default) хоста зададим свой (newsite), но оставим копию стандартного. Копируем дефолтный в новый:

Дефолтный конфиг оставим в покое,- удобным способом правим наш новый:

  • в стандартном консольном редакторе:
  • В Gnome стандартным редактором:
  • В KDE стандартным редактором:

В открытом файле меняем директивы:

  • DocumentRoot — корневая директория. Там хранятся файлы нашего сайта. По умолчанию /var/www. Оттуда мы получили index.html набрав http://localhost в строке браузера. Эта директория мне не очень по душе, меняем ее на /home/public_html. Вы можете указать другой путь.
  • Directory меняем с  /var/www на /home/public_html или на другую, (такую же как в DocumentRoot.
Сохраняем файл и не забываем создать папку указанную в DocumentRoot или прописать символическую сыылку!

Теперь надо активировать наш новый хост. Делается это стандартными убунтовскими утилитами.

Отключаем дефолтный сайт:

Подключаем новый:

И перезагружаем Apache

или классическим способом:

Далее в директории  хоста (/home/public_html/) создаем файл phpinfo.php со следующим содержимым:

Далее пытаемся открыть его из браузера: http://localhost/phpinfo.php

Если он загрузился, значит сервер Apcahe и php работает корректно.

На этом месте я перезагрузился, т.к. система перестал вести себя корректно (файрфокс падал) и решил обновить таки систему (была нулевая).

Настройки php  лежат  в папке /etc/php5/apache2/php.ini. Это настройки для web части php (то что выдает Apache). Есть еще один php.ini — /etc/php5/cli/php.ini — настройки php для консоли. Его трогать не надо. Однако стоит учесть, что при отладке php из консоли (командами типа php -i и др.) сведения будут браться именно оттуда. Для отладки web части лучше использовать phpinfo() как мы сделали в файле phpinfo.php. Теперь настроим php:

Тут директивы должны быть такие (из тех что мне пришлось поменять):

  • display_errors On
  • html_errors On (если не включить, Xdebug не сможет форматировать вывод)
  • output_buffering Off

Затем необходимо подключить XDebug в php.ini:

Использованные материалы:

http://help.ubuntu.ru/wiki/apachemysqlphp

У многих пользовтелей возникает проблема с XDebug. Cтоит посмотреть в php.ini как он декларирован, как ZendExtention или просто Extention. Так же нужно проверить путь до папки с расширениями. Остальное смотрим в логах Apache.

Яндекс.Метрика