Все о web разработке на xdan.ru
  • Регистрация
  • Войти
         

Menu
  • Главнаявсе о web разработке
  • CopySiteСервис
      • Новости сервиса CopySite
  • Категориивсе материалы
      • JavaScript
          • jQuery
              • Обзор плагинов
      • PHP
          • Yii
          • Laravel
      • Новости Web технологий
      • Soft
          • Opera
      • Парсеры
      • CMS
          • Joomla
              • Документация для разработчиков Joomla
          • Danneo
          • UMI
          • Drupal
      • Социальные сети
      • Из жизни
      • Политика
      • Мои разработки
          • Конструктор Yandex карт
      • Новости сайта
      • SEO
      • Защита сайта
      • Администрирование WEB сервера
      • Монетизация сайта
      • web разработка
      • Железо
      • Хостинг
      • Игры
      • Про киномнение о кино
      • Нативное программирование
      • Видео
  • Магазинкупить продукты сайта
  • Joomlaвсе для joomla
      • Плагин CTRL+S быстрое сохранение материала в Joomla
          • Скачать плагин CTRL+S
      • Создаем собственную SEF систему для Joomla
      • Как написать Joomla плагин для xmap
      • Модуль Конструктор Яндекс Карт для Joomla
          • Скачать модуль Конструктор Янлекс Карт для Joomla
      • Компонент Яндекс Карты для Joomla
          • Документация компонента Яндекс Карты для Joomla
          • Демонстрация - лицевая часть
          • Демонстрация - администратор (demo,demo)
          • Уроки
      • Менеджер перенаправлений Joomla
  • Наши разработкиавторские разработки
      • HTML Map generator
      • liveadd
      • Конструктор Яндекс Карт
      • Онлайн синонимайзер текстов
      • Joomla Module Generator
      • Joomla плагин CTRL+S AutoSave
      • Лучший DateTimePicker
      • miniMySQLAdmin - легковесная альтернатива phpMyAdmin
      • Joomla модуль Конструктор Яндекс Карт
      • Скачать копию сайта
  • Конструктор Yandex картгенератор кода для Яндекс карт

Учимся парсить сайты с библиотекой PHP Simple HTML DOM Parser

Информация о материале
Категория: PHP
Опубликовано: 18 марта 2011
Просмотров: 393191
  • парсер
  • html
  • simple_html_dom
  • dom
  • парсер яндекса

copysite

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

 Возьмем HTML код: 

<div><a href="http://xdan.ru"><div>Сайт по программированию парсеров</div><div> и многое другое</div></a></div>

К примеру, из него нам нужно получить описание и url сайта. Если брать исключительно этот кусок кода, то все решается достаточно просто: 

$html = '<div><a href="http://xdan.ru"><div>Сайт по программированию парсеров</div><div> и многое другое</div></a></div>';
preg_match('#<div><a href="([^"]+)"><div>([^<]+)</div><div>([^<]+)</div></a></div>#U',$html,$list);
echo 'url:'.$list[1].',title:'.$list[2].$list[3]; // выведет url:http://xdan.ru,title:Сайт по программированию парсеров и многое другое

Проблемы начинаются тогда, когда описание сайта заполняют пользователи, и оно не имеет   определенного шаблона.

<div><a href=”http://xdan.ru”><div>Сайт по <b>программированию</b> парсеров</div><div> и многое <div> многое </div> другое </div></a></div>

Такой код регулярному выражению не по зубам.

Обычно, в вузах на этот случай учат писать конечный автомат. Суть его в том, что мы перебираем, посимвольно, весь html текст, находим начало тега, и строим дерево документа. Так называемое DOM (Document Object Model)

Сейчас, писать такое самому  нет необходимости.

В php, начиная с  версии 5, есть встроенные методы работы с деревом документа (класс DOMDocument), но основан он на XML парсере.

А HTML и XML это хоть и очень похожие, но в тоже время абсолютно разные технологии.

К примеру, непременное требование к XML это закрытые теги и отсутствие ошибок.

Отсюда вытекает условие: ошибок в html, который мы парсим с помощью нативных средств php,  быть не должно.

К сожалению, на сайтах донорах, ошибки не редки, а значит этот метод отпадает.

Для корректного разбора таких сайтов, на помощь придут php библиотеки PHPQuery, Simple HTML DOM, Zend DOM Query, Nokogiri .

Некоторые из них, после небольших манипуляций скармливают html  тому же DOMDocument. Мы не будем их рассматривать.

В этой статье я расскажу про SimpleHTMLDOM. Этой библиотекой я пользуюсь уже несколько лет, и она меня еще ни разу не подводила.

Рассказать друзьям
Подробнее... 296 комментариев

Примеры работы с ajax на jQuery

Информация о материале
Категория: jQuery
Опубликовано: 02 марта 2011
Просмотров: 126526
  • jquery
  • ajax
  • post
  • get
  • getjson
  • авторизация

В библиотеке jQuery есть несколько методов для работы с ajax: jQuery.post, $.get, $.getJSON, $.ajax. В конечном счете, все они - более удобная надстройка над $.ajax. Объясню на простом ajax примере: 

Отправим на страницу index.php данные с формы. После того, как данные отправлены, выведем сообщение. В случае ошибки также сообщим об этом пользователю.

Сначала методом $.post

var data = $('#form').serialize(); 
$.post('index.php',data,function(data,status){
	if( status=='success' ){
		alert('Данные успешно отправлены!')
	}else{
		alert('В процессе отправки произошла ошибка :(')
	}
})
Рассказать друзьям
Подробнее... 22 комментария

Многопоточные парсеры

Информация о материале
Категория: PHP
Опубликовано: 18 февраля 2011
Просмотров: 44098
  • php
  • парсер
  • curl
  • curl_multi
  • мультипоточность в php

Парсер, парсер, парсер

Который год пишу парсеры, и знать ничего не знал про многопоточность. В продвинутых компилируемых языках типа C++, Delphi и даже в старом добром, интерпретируемом Perl, многопоточность одна из главных составляющих. Никто бы не стал пользоваться приложением, если бы его окно зависало во время больших вычислений. Программистам PHP повезло меньше. Этот язык вырос из шаблонизатора, и каким бы он не был удобным по сути шаблонизатором и остается. Многопоточности в нем попросту НЕТ. Наверно поэтому  большинством уже упомянутых сиплюсоидов и делфистов считают PHP недоязыком.

Однако порой наступает случай, когда запуск одного и того же PHP скрипта, одновременно с разными параметрами, здорово увеличивает производительность. И многопоточные парсеры тому пример. Однако стоит опять упомянуть, что потоков в языке нет, и все что будет изложено ниже, это всего лишь псевдо мультипоточность. Все дело в том, что запросов к серверу донору можно посылать хоть сколько, лишь бы канал работал. А потом, в цикле основного потока, проверять какой из запросов отработал. Вот и все чудеса. Обработка данных происходит также в одном потоке, а вот их прием и пересылка в нескольких. Это значит, что  в момент пока запрос №2 еще не завершился, а №1  уже вернул результат, мы можем обрабатывать его труды.

Рассказать друзьям
Подробнее... 28 комментариев

onDomReady без jQuery

Информация о материале
Категория: JavaScript
Опубликовано: 30 января 2011
Просмотров: 8280
  • jquery
  • ondomready
  • addeventlistener

Выдернул из jQuery реализацию обработчика события onDomReady. Для тех, кто не в курсе поясню, что это событие возникает, после того как весь html код страницы будет загружен браузером, но в отличие от  window.load, срабатывает раньше того, как будут загружены все стили, скрипты, картинки и т.д. Т.е. если в своем JS вам надо провести какие-то манипуляции с DOM на странице до ее показа, то вам нужен именно этот метод. Вы, конечно, можете подключать jQuery целиком, и тогда в вашем распоряжении будет этот метод. К примеру при подключенном jQuery установить событие можно так

Рассказать друзьям
Подробнее... 1 комментарий

Как определить преобладающий цвет в изображении

Информация о материале
Категория: PHP
Опубликовано: 11 января 2011
Просмотров: 27913
  • image color
  • getimagecolor
  • полезный скрипт
  • сортировка изображений

Сортировки фотографий по содержанию - задача совсем не тривиальная, и в большей мере играет роль качество распознавания содержания, с которым Вам нужно отсортировать изображение. Конечно о системе интеллектуального распознавания изображения речи не идет, но получить инструмент, с которым можно было бы сортировать более менее похожие фото, вполне реально. К примеру фотосет Джессики Альбы, который каким-то образом смешался с 1000 фото других актрис. Часто отличить такой фотосет от остальных можно по набору цветов, которые доминируют в фото, так как съемки обычно ведутся в одних и тех же декорациях, и лишь модель меняет позу. Этому занятию и посвящен данный пост.

Вы наверное видели в Яндекс картинках поиск по цвету. Как было бы здорово если бы у Вас была возможность сортировать фото таким же образом на своем сайте.

Рассказать друзьям
Подробнее... 15 комментариев
  1. Как написать свой фреймворк на php. Обработка ошибок. Урок 4
  2. Компонент Яндекс Карты для Joomla
  3. Как написать свой фреймворк на php. Модель. Урок 5
  4. Сервис закачки копии страницы сайта

Страница 10 из 11

  • В начало
  • Назад
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • ...
  • 10
  • 11
  • Вперед
  • В конец

ПЛАТНОЕ РАЗМЕЩЕНИЕ СТАТЕЙ НА САЙТЕ

Размещение готовой статьи – 350 р.

Написание + размещение статьи (до 2000 слов) – 550 р.
 
Оформить заказ: hr.xdan@yandex.ru

Полезные статьи

  • Joomla сниппеты
  • Joomla ZOO сниппеты
  • PHP сниппеты
  • Yii сниппеты
  • SSH сниппеты и защита сайта
  • CSS сниппеты
  • JavaScript сниппеты

Популярные статьи

  • Учимся парсить сайты с библиотекой PHP Simple HTML DOM Parser 2011-03-18 12:33:20

  • Примеры работы с ajax на jQuery 2011-03-01 21:04:00

  • Как написать универсальный парсер сайтов за 1 час 2014-04-25 09:36:58

  • Работа с файлами в JavaScript, Часть 1: Основы 2012-06-25 22:02:14

  • Авторизация на сайте при помощи curl php 2012-07-19 02:33:00

Авторизация через сервисы

         

  • Забыли пароль?
  • Забыли логин?
  • Регистрация

Категории

  • JavaScript
  • PHP
  • Новости Web технологий
  • Soft
  • Парсеры
  • CMS
  • Социальные сети
  • Из жизни
  • Политика
  • Мои разработки
  • Новости сайта
  • SEO
  • Защита сайта
  • Администрирование WEB сервера
  • Монетизация сайта
  • web разработка
  • Железо
  • Хостинг
  • Игры
  • Про кино
  • Нативное программирование
  • Видео
Как скопировать любой сайт?

© 2021 Все о web разработке на xdan.ru

  • О сайте
  • Об авторе
Go Top