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

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

Embed Size (px)

DESCRIPTION

Автоматическая загрузка и обработка данных для. веб-порталов. Автоматическая загрузка данных на сайт. Для чего это необходимо:. $. сайт. Новости. Автоматическая загрузка данных на сайт. Для чего это необходимо:. $. сайт. Новости. Более глобальные задачи:. - PowerPoint PPT Presentation

Citation preview

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

LOGO

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

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

веб-порталов

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

www.thmemgallery.comwww.thmemgallery.com Company LogoCompany Logo

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

Для чего это необходимо:

сайт

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

www.thmemgallery.comwww.thmemgallery.com Company LogoCompany Logo

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

Для чего это необходимо:

сайт

Более глобальные задачи:

Головная организация

HTML

поставщикпоставщик

поставщик

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

www.thmemgallery.comwww.thmemgallery.com Company LogoCompany Logo

Скачивание каталога продукциив html-формате

Получение данных с указанного URL

Извлечение содержимого из полученной страницы

Дополнительная обработка и вывод на сайте

1.

2.

3.

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

www.thmemgallery.comwww.thmemgallery.com Company LogoCompany Logo

Скачивание каталога продукциив html-формате

1. Получение данных с указанного URL

Для этого в РНР существует несколько возможностей:

fopen

file_get_contentsБиблиотека cURL

Соединение черезсокеты

fsockopen

$fp = fsockopen($host, 80, $errno, $errstr, 20); Открываем сокет

Log

$out = "GET $path HTTP/1.0\r\n";

$out .= "Host: $host\r\n";

$out .= "User-Agent: Opera/8.01 (J2ME/MIDP; ".

"Opera Mini/2.0.4509/1716; ru; U; ssr)\r\n";

$out .= "Cache-Control: no-cache\r\n";

$out .= "Connection: Close\r\n\r\n";

Строка заголовка для пакета

Сервер

fwrite($fp, $out); Пакет

$body = "";

while (!feof($fp))

$body .= fgets($fp);

Ответ

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

www.thmemgallery.comwww.thmemgallery.com Company LogoCompany Logo

Скачивание каталога продукциив html-формате

2. Извлечение содержимого из страницы

<div class="content">

Мама мыла раму

</div>

<div class="footer">

Регулярные выражения Мама мыла раму

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

www.thmemgallery.comwww.thmemgallery.com Company LogoCompany Logo

Скачивание каталога продукциив html-формате

3. Обработка и отображение на сайте

1. Поиск ссылок и формирование массива

function parseLinks( $data ) {

$pattern = "/<a\\s+[^>]*href\\s*=\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. Сохранение обработанного текста во временное хранилище

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

www.thmemgallery.comwww.thmemgallery.com Company LogoCompany Logo

Скачивание каталога продукциив html-формате

4. Отображение на сайте подразделения

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

www.thmemgallery.comwww.thmemgallery.com Company LogoCompany Logo

Обновление каталогов продукцииот разных поставщиков

О проекте

поставщик поставщик поставщик

Покупатель

зака

збронь аналог

запр

ос

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

www.thmemgallery.comwww.thmemgallery.com Company LogoCompany Logo

Обновление каталогов продукцииот разных поставщиков

Способы загрузки данныхПоставщики передают свои данные разными способами: HTTP c Basic-авторизацией

FTP

$out = "GET $uri HTTP/1.1\r\n";$out .= "Host: ".$host."\r\n";$out .= "Connection: Close\r\n";$out .= 'Authorization: Basic '.base64_encode($user.':'.$pwd)."\r\n";

$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

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

www.thmemgallery.comwww.thmemgallery.com Company LogoCompany Logo

Обновление каталогов продукцииот разных поставщиков

Архивы с данными

ZIP-файл

PCLZip

XML-данные

$archive = new PclZip('archive.zip');$list = $archive->extract(PCLZIP_OPT_BY_NAME, "data/archive.xml", PCLZIP_OPT_EXTRACT_AS_STRING);

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

www.thmemgallery.comwww.thmemgallery.com Company LogoCompany 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);

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

www.thmemgallery.comwww.thmemgallery.com Company LogoCompany Logo

Обновление каталогов продукцииот разных поставщиков

Отображение на сайте