SlideShare a Scribd company logo
1 of 13
LOGO
Автоматическая загрузка и
обработка данных для
веб-порталов
www.thmemgal Company Logo
Автоматическая загрузка данных на сайт
Для чего это необходимо:
сайт
www.thmemgal Company Logo
Автоматическая загрузка данных на сайт
Для чего это необходимо:
сайт
Более глобальные задачи:
Головная
организация
HTML
поставщик
поставщик
поставщик
1С
www.thmemgal Company Logo
Скачивание каталога продукции
в html-формате
Получение данных с указанного URL
Извлечение содержимого из полученной страницы
Дополнительная обработка и вывод на сайте
1.
2.
3.
www.thmemgal Company Logo
Скачивание каталога продукции
в html-формате
 1. Получение данных с указанного URL
Для этого в РНР существует несколько возможностей:
fopen
file_get_contents
Библиотека cURL
Соединение через
сокеты
fsockopen
$fp = fsockopen($host, 80, $errno, $errstr, 20);
Открываем сокет
Log
$out = "GET $path HTTP/1.0rn";
$out .= "Host: $hostrn";
$out .= "User-Agent: Opera/8.01 (J2ME/MIDP; ".
"Opera Mini/2.0.4509/1716; ru; U; ssr)rn";
$out .= "Cache-Control: no-cachern";
$out .= "Connection: Closernrn";
Строка заголовка для пакета
Сервер
fwrite($fp, $out);
Пакет
$body = "";
while (!feof($fp))
$body .= fgets($fp);
Ответ
www.thmemgal Company Logo
Скачивание каталога продукции
в html-формате
 2. Извлечение содержимого из страницы
…
<div class="content">
Мама мыла раму
</div>
<div class="footer">
…
Регулярные
выражения
Мама мыла раму
www.thmemgal Company Logo
Скачивание каталога продукции
в html-формате
 3. Обработка и отображение на сайте
1. Поиск ссылок и формирование массива
function parseLinks( $data ) {
$pattern = "/<as+[^>]*hrefs*=s*["']?([^"'>]+)["'][^>]*>(?:(?U)(.*)</a>)/i";
$a = preg_replace_callback($pattern, array(&$this, 'linkRender'), $data );
}
function linkRender( $matches ) {
if ( strpos($matches[1], 'http:/') || strpos($matches[1], 'ftp:/')) return;
$link_key = 'http://'.$this->domain.$matches[1];
if ( strpos($matches[1], '/products') && !array_key_exists ($link_key, $this->links) ){
$this->links[ $link_key ] = '-1';
}
}
2. Исключение стилей и классов
3. Абсолютные ссылки и абсолютные пути для картинок
4. Сохранение обработанного текста во временное хранилище
www.thmemgal Company Logo
Скачивание каталога продукции
в html-формате
 4. Отображение на сайте подразделения
www.thmemgal Company Logo
Обновление каталогов продукции
от разных поставщиков
О проекте
поставщик поставщик поставщик
Покупатель
заказ
бронь аналог
запрос
www.thmemgal Company Logo
Обновление каталогов продукции
от разных поставщиков
Способы загрузки данных
Поставщики передают свои данные разными способами:
 HTTP c Basic-авторизацией
 FTP
$out = "GET $uri HTTP/1.1rn";
$out .= "Host: ".$host."rn";
$out .= "Connection: Closern";
$out .= 'Authorization: Basic '.base64_encode($user.':'.$pwd)."rn";
$sock = @fsockopen($host, 80, $errno, $errstr, 10);
fwrite($sock, $out);
$conn_id = ftp_connect($server_);
Устанавливаем соединение
Log
$result = ftp_login($conn_id, $login_, $pass_);
Передаем логин и пароль
ftp_get($conn_id, $local_file, $server_file, FTP_ASCII);
Скачиваем server_file и сохраняем в local_file
www.thmemgal Company Logo
Обновление каталогов продукции
от разных поставщиков
Архивы с данными
ZIP-файл
PCLZip
XML-данные
$archive = new PclZip('archive.zip');
$list = $archive->extract(PCLZIP_OPT_BY_NAME, "data/archive.xml",
PCLZIP_OPT_EXTRACT_AS_STRING);
www.thmemgal Company Logo
Обновление каталогов продукции
от разных поставщиков
Варианты обработки XML
В PHP существует несколько встроенных вариантов обработки XML -
SimpleXML, DOM, SAX.
SimpleXML
$xml = simplexml_load_file($file);
$arr = $xml->Xpath(”/document/products/*”);
Array – массив объектов
Примеры использования Xpath
$result = $xml->Xpath(”//*”); - найдет вообще все объекты;
$result = $xml->Xpath(”//div”); - найдет все объекты div;
$result = $xml->Xpath(”//div[@id='head']”); - найдет объект div c id = head
foreach($arr as $k=>$atr)
$goods[]=Array(
“articul”=>$atr->articul,
”name”=>$atr->name,
“price”=>$atr->price,
“descr”=>$atr->description);
www.thmemgal Company Logo
Обновление каталогов продукции
от разных поставщиков
Отображение на сайте

More Related Content

Similar to Автоматическая загрузка и обработка данных для веб-порталов

Saint Perl 2009: CGI::Ajax demo
Saint Perl 2009: CGI::Ajax demoSaint Perl 2009: CGI::Ajax demo
Saint Perl 2009: CGI::Ajax demomegakott
 
Полуавтоматизация third-party API
Полуавтоматизация third-party APIПолуавтоматизация third-party API
Полуавтоматизация third-party APISQALab
 
Django шахрай. версия 4
Django шахрай. версия 4Django шахрай. версия 4
Django шахрай. версия 4smikler
 
технический seo аудит
технический seo аудиттехнический seo аудит
технический seo аудитptax
 
Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkPhalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkOleksandr Torosh
 
"Создание системы логирования" Литуненко Андрей, 2ГИС
"Создание системы логирования" Литуненко Андрей, 2ГИС"Создание системы логирования" Литуненко Андрей, 2ГИС
"Создание системы логирования" Литуненко Андрей, 2ГИСit-people
 
Silverlight 4, есть ли жизнь на десктопе?
Silverlight 4, есть ли жизнь на десктопе?Silverlight 4, есть ли жизнь на десктопе?
Silverlight 4, есть ли жизнь на десктопе?Eugene Zharkov
 
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''DneprCiklumEvents
 
презентация Day4
презентация Day4презентация Day4
презентация Day4Bulatov Edward
 
Неочевидные возможности ускорения работы сайта
Неочевидные возможности ускорения работы сайтаНеочевидные возможности ускорения работы сайта
Неочевидные возможности ускорения работы сайтаNetpeak
 
Компиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоКомпиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоFuenteovejuna
 
Catalyst – MVC framework на Perl (RIT 2008)
Catalyst – MVC framework на Perl  (RIT 2008)Catalyst – MVC framework на Perl  (RIT 2008)
Catalyst – MVC framework на Perl (RIT 2008)Sergey Skvortsov
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Yandex
 
«Индексация сайтов в Яндексе» 17 лекция, александр смирнов
«Индексация сайтов в Яндексе» 17 лекция, александр смирнов«Индексация сайтов в Яндексе» 17 лекция, александр смирнов
«Индексация сайтов в Яндексе» 17 лекция, александр смирновЕвгений Летов
 

Similar to Автоматическая загрузка и обработка данных для веб-порталов (20)

Saint Perl 2009: CGI::Ajax demo
Saint Perl 2009: CGI::Ajax demoSaint Perl 2009: CGI::Ajax demo
Saint Perl 2009: CGI::Ajax demo
 
Полуавтоматизация third-party API
Полуавтоматизация third-party APIПолуавтоматизация third-party API
Полуавтоматизация third-party API
 
Django шахрай. версия 4
Django шахрай. версия 4Django шахрай. версия 4
Django шахрай. версия 4
 
технический seo аудит
технический seo аудиттехнический seo аудит
технический seo аудит
 
бегун
бегунбегун
бегун
 
Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkPhalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP Framework
 
"Создание системы логирования" Литуненко Андрей, 2ГИС
"Создание системы логирования" Литуненко Андрей, 2ГИС"Создание системы логирования" Литуненко Андрей, 2ГИС
"Создание системы логирования" Литуненко Андрей, 2ГИС
 
Silverlight 4, есть ли жизнь на десктопе?
Silverlight 4, есть ли жизнь на десктопе?Silverlight 4, есть ли жизнь на десктопе?
Silverlight 4, есть ли жизнь на десктопе?
 
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
 
презентация Day4
презентация Day4презентация Day4
презентация Day4
 
презентация Day4
презентация Day4презентация Day4
презентация Day4
 
Неочевидные возможности ускорения работы сайта
Неочевидные возможности ускорения работы сайтаНеочевидные возможности ускорения работы сайта
Неочевидные возможности ускорения работы сайта
 
Компиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоКомпиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей Романенко
 
Ci
CiCi
Ci
 
Catalyst – MVC framework на Perl (RIT 2008)
Catalyst – MVC framework на Perl  (RIT 2008)Catalyst – MVC framework на Perl  (RIT 2008)
Catalyst – MVC framework на Perl (RIT 2008)
 
PHP
PHPPHP
PHP
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
 
«Индексация сайтов в Яндексе» 17 лекция, александр смирнов
«Индексация сайтов в Яндексе» 17 лекция, александр смирнов«Индексация сайтов в Яндексе» 17 лекция, александр смирнов
«Индексация сайтов в Яндексе» 17 лекция, александр смирнов
 
"ТОП10 SEO-ошибок при переезде сайта на https-протокол, смене домена" Вебинар...
"ТОП10 SEO-ошибок при переезде сайта на https-протокол, смене домена" Вебинар..."ТОП10 SEO-ошибок при переезде сайта на https-протокол, смене домена" Вебинар...
"ТОП10 SEO-ошибок при переезде сайта на https-протокол, смене домена" Вебинар...
 
бегун
бегунбегун
бегун
 

More from index.art

Разработка, продвижение и сопровождение сайтов
Разработка, продвижение и сопровождение сайтовРазработка, продвижение и сопровождение сайтов
Разработка, продвижение и сопровождение сайтовindex.art
 
Плюсы минусинска
Плюсы минусинскаПлюсы минусинска
Плюсы минусинскаindex.art
 
МегаКвест: доклад на дне открытых дверей
МегаКвест: доклад на дне открытых дверейМегаКвест: доклад на дне открытых дверей
МегаКвест: доклад на дне открытых дверейindex.art
 
Шаблонизация на стороне клиента. Использование для вывода настраиваемых отчетов
Шаблонизация на стороне клиента. Использование для вывода настраиваемых отчетовШаблонизация на стороне клиента. Использование для вывода настраиваемых отчетов
Шаблонизация на стороне клиента. Использование для вывода настраиваемых отчетовindex.art
 
Реализация складского учета методом FIFO с использованием продвинутых возможн...
Реализация складского учета методом FIFO с использованием продвинутых возможн...Реализация складского учета методом FIFO с использованием продвинутых возможн...
Реализация складского учета методом FIFO с использованием продвинутых возможн...index.art
 
ORM: благо или зло?
ORM: благо или зло?ORM: благо или зло?
ORM: благо или зло?index.art
 
SaaS "в облаках". День Открытых Дверей 2012
SaaS "в облаках". День Открытых Дверей 2012SaaS "в облаках". День Открытых Дверей 2012
SaaS "в облаках". День Открытых Дверей 2012index.art
 
Как угробить SEO? Вредные советы
Как угробить SEO? Вредные советыКак угробить SEO? Вредные советы
Как угробить SEO? Вредные советыindex.art
 
Битва за миллисекунды: практика ускорения веб сайтов
Битва за миллисекунды: практика ускорения веб сайтовБитва за миллисекунды: практика ускорения веб сайтов
Битва за миллисекунды: практика ускорения веб сайтовindex.art
 
Вычислительная погрешность в бухгалтерском учете
Вычислительная погрешность в бухгалтерском учетеВычислительная погрешность в бухгалтерском учете
Вычислительная погрешность в бухгалтерском учетеindex.art
 
E-SET Version 2.0
E-SET Version 2.0E-SET Version 2.0
E-SET Version 2.0index.art
 
E-SET open air 2013
E-SET open air 2013E-SET open air 2013
E-SET open air 2013index.art
 
СНР Процесс и результаты
СНР Процесс и результатыСНР Процесс и результаты
СНР Процесс и результатыindex.art
 

More from index.art (13)

Разработка, продвижение и сопровождение сайтов
Разработка, продвижение и сопровождение сайтовРазработка, продвижение и сопровождение сайтов
Разработка, продвижение и сопровождение сайтов
 
Плюсы минусинска
Плюсы минусинскаПлюсы минусинска
Плюсы минусинска
 
МегаКвест: доклад на дне открытых дверей
МегаКвест: доклад на дне открытых дверейМегаКвест: доклад на дне открытых дверей
МегаКвест: доклад на дне открытых дверей
 
Шаблонизация на стороне клиента. Использование для вывода настраиваемых отчетов
Шаблонизация на стороне клиента. Использование для вывода настраиваемых отчетовШаблонизация на стороне клиента. Использование для вывода настраиваемых отчетов
Шаблонизация на стороне клиента. Использование для вывода настраиваемых отчетов
 
Реализация складского учета методом FIFO с использованием продвинутых возможн...
Реализация складского учета методом FIFO с использованием продвинутых возможн...Реализация складского учета методом FIFO с использованием продвинутых возможн...
Реализация складского учета методом FIFO с использованием продвинутых возможн...
 
ORM: благо или зло?
ORM: благо или зло?ORM: благо или зло?
ORM: благо или зло?
 
SaaS "в облаках". День Открытых Дверей 2012
SaaS "в облаках". День Открытых Дверей 2012SaaS "в облаках". День Открытых Дверей 2012
SaaS "в облаках". День Открытых Дверей 2012
 
Как угробить SEO? Вредные советы
Как угробить SEO? Вредные советыКак угробить SEO? Вредные советы
Как угробить SEO? Вредные советы
 
Битва за миллисекунды: практика ускорения веб сайтов
Битва за миллисекунды: практика ускорения веб сайтовБитва за миллисекунды: практика ускорения веб сайтов
Битва за миллисекунды: практика ускорения веб сайтов
 
Вычислительная погрешность в бухгалтерском учете
Вычислительная погрешность в бухгалтерском учетеВычислительная погрешность в бухгалтерском учете
Вычислительная погрешность в бухгалтерском учете
 
E-SET Version 2.0
E-SET Version 2.0E-SET Version 2.0
E-SET Version 2.0
 
E-SET open air 2013
E-SET open air 2013E-SET open air 2013
E-SET open air 2013
 
СНР Процесс и результаты
СНР Процесс и результатыСНР Процесс и результаты
СНР Процесс и результаты
 

Автоматическая загрузка и обработка данных для веб-порталов

  • 2. www.thmemgal Company Logo Автоматическая загрузка данных на сайт Для чего это необходимо: сайт
  • 3. www.thmemgal Company Logo Автоматическая загрузка данных на сайт Для чего это необходимо: сайт Более глобальные задачи: Головная организация HTML поставщик поставщик поставщик 1С
  • 4. www.thmemgal Company Logo Скачивание каталога продукции в html-формате Получение данных с указанного URL Извлечение содержимого из полученной страницы Дополнительная обработка и вывод на сайте 1. 2. 3.
  • 5. www.thmemgal Company Logo Скачивание каталога продукции в html-формате  1. Получение данных с указанного URL Для этого в РНР существует несколько возможностей: fopen file_get_contents Библиотека cURL Соединение через сокеты fsockopen $fp = fsockopen($host, 80, $errno, $errstr, 20); Открываем сокет Log $out = "GET $path HTTP/1.0rn"; $out .= "Host: $hostrn"; $out .= "User-Agent: Opera/8.01 (J2ME/MIDP; ". "Opera Mini/2.0.4509/1716; ru; U; ssr)rn"; $out .= "Cache-Control: no-cachern"; $out .= "Connection: Closernrn"; Строка заголовка для пакета Сервер fwrite($fp, $out); Пакет $body = ""; while (!feof($fp)) $body .= fgets($fp); Ответ
  • 6. www.thmemgal Company Logo Скачивание каталога продукции в html-формате  2. Извлечение содержимого из страницы … <div class="content"> Мама мыла раму </div> <div class="footer"> … Регулярные выражения Мама мыла раму
  • 7. www.thmemgal Company Logo Скачивание каталога продукции в html-формате  3. Обработка и отображение на сайте 1. Поиск ссылок и формирование массива function parseLinks( $data ) { $pattern = "/<as+[^>]*hrefs*=s*["']?([^"'>]+)["'][^>]*>(?:(?U)(.*)</a>)/i"; $a = preg_replace_callback($pattern, array(&$this, 'linkRender'), $data ); } function linkRender( $matches ) { if ( strpos($matches[1], 'http:/') || strpos($matches[1], 'ftp:/')) return; $link_key = 'http://'.$this->domain.$matches[1]; if ( strpos($matches[1], '/products') && !array_key_exists ($link_key, $this->links) ){ $this->links[ $link_key ] = '-1'; } } 2. Исключение стилей и классов 3. Абсолютные ссылки и абсолютные пути для картинок 4. Сохранение обработанного текста во временное хранилище
  • 8. www.thmemgal Company Logo Скачивание каталога продукции в html-формате  4. Отображение на сайте подразделения
  • 9. www.thmemgal Company Logo Обновление каталогов продукции от разных поставщиков О проекте поставщик поставщик поставщик Покупатель заказ бронь аналог запрос
  • 10. www.thmemgal Company Logo Обновление каталогов продукции от разных поставщиков Способы загрузки данных Поставщики передают свои данные разными способами:  HTTP c Basic-авторизацией  FTP $out = "GET $uri HTTP/1.1rn"; $out .= "Host: ".$host."rn"; $out .= "Connection: Closern"; $out .= 'Authorization: Basic '.base64_encode($user.':'.$pwd)."rn"; $sock = @fsockopen($host, 80, $errno, $errstr, 10); fwrite($sock, $out); $conn_id = ftp_connect($server_); Устанавливаем соединение Log $result = ftp_login($conn_id, $login_, $pass_); Передаем логин и пароль ftp_get($conn_id, $local_file, $server_file, FTP_ASCII); Скачиваем server_file и сохраняем в local_file
  • 11. www.thmemgal Company Logo Обновление каталогов продукции от разных поставщиков Архивы с данными ZIP-файл PCLZip XML-данные $archive = new PclZip('archive.zip'); $list = $archive->extract(PCLZIP_OPT_BY_NAME, "data/archive.xml", PCLZIP_OPT_EXTRACT_AS_STRING);
  • 12. www.thmemgal Company Logo Обновление каталогов продукции от разных поставщиков Варианты обработки XML В PHP существует несколько встроенных вариантов обработки XML - SimpleXML, DOM, SAX. SimpleXML $xml = simplexml_load_file($file); $arr = $xml->Xpath(”/document/products/*”); Array – массив объектов Примеры использования Xpath $result = $xml->Xpath(”//*”); - найдет вообще все объекты; $result = $xml->Xpath(”//div”); - найдет все объекты div; $result = $xml->Xpath(”//div[@id='head']”); - найдет объект div c id = head foreach($arr as $k=>$atr) $goods[]=Array( “articul”=>$atr->articul, ”name”=>$atr->name, “price”=>$atr->price, “descr”=>$atr->description);
  • 13. www.thmemgal Company Logo Обновление каталогов продукции от разных поставщиков Отображение на сайте