парсер

12
Alipapa
На сайте с 01.02.2008
Offline
194
#11

Да мы как-то по-старинке всё. В базу загоняем, а там уже по свом шаблонам, без xsl-ей, слишком оно мудрено.

Биржа фриланса - простая и удобная (http://kwork.ru/ref/2541)
СД
На сайте с 21.03.2009
Offline
28
#12
Ispanez1:
Попробовал поставить парсер.
В нем есть критическая ошибка в ссылке с партнерским ID!

Странно что никто не писал раньше. Никто его вообще не ставил что ли?

Спасибо, что заметили!

Исправил, в следующей версии 1.11 войдет в дистрибутив.

A
На сайте с 18.06.2010
Offline
19
#13
OZON.ru:

В XML не выводятся корректно некоторые подкатегории подкаталога, из-за чего парсер может не все выводить. Можно посоветовать использовать каталог конечной ветки, например, для детективов, ветки ID 1093883 можно вывести каталог конечного уровня «Зарубежный детектив». В парсере необходимо прописать такие строки:

$catalog = new OzonCatalog('audiobook_catalog/1093883');
'categoryId' => 1072682, // Зарубежные детективы

С другими ID каталога аналогично.

Ок, получилось!

Есть несколько вопросов

1. Как вывести http://www.ozon.ru/context/audiobook_new/

2. как бы раздел Аудиокниги структурировать по темам книг? Т.е фантастика и детективы, история - это отдельные разделы, а другие жанры: приключения, юмор, любовные романы, ужасы и т.п.

3. раздел "Цифровые аудиокниги" http://www.ozon.ru/context/eabook_catalog/ уже доступен в xml?

Для меня это очень актуально.

OR
На сайте с 12.03.2008
Offline
123
#14

artbdk, цифровые товары для скачивания НЕ участвуют в Партнерской программе. По остальному постараемся чуть позже ответить.

Служба поддержки партнерской программы OZON.ru (http://www.ozon.ru/context/partner/) Регистрация партнера (http://www.ozon.ru/?context=partner_join), Обратная связь (http://www.ozon.ru/context/partner_feedback/)
A
На сайте с 18.06.2010
Offline
19
#15

Испытываю проблемы с получением xml файла. К примеру мне надо получить xml файл раздела "Туристические рюкзаки", в описании сказано, что формат должен быть http://www.ozon.ru/multimedia/yml/partner/имя_каталога.xml

Какое "имя каталога" мне подставлять?

Для 3 уровня раздела книги нужно подставить book_catalog/12351.xml, а для других разделов?

Пробую http://www.ozon.ru/multimedia/yml/partner/tourism/1095931.xml не дает.

Где можно узнать имя каталога для разных разделов?

Я заметил, что на странице товара Вы сделали кнопку "Партнерская ссылка на эту страницу" ну и добавьте к этой информации поле содержащие путь к xml каталогу раздела.

H
На сайте с 04.03.2008
Offline
22
#16

Помогите разобраться.

Есть парсер 1.15 от Стас Давыдов (http://stasdavydov.com/ozonru-parser/).

Установлен на Windows Server 2003, PHP 5.2.14.

Все тесты парсера на совместимость (bin\check.php) проходят удачно (все с +).

Однако, при попытке получить весь список (web\index.php) разделов выдается ошибка:

Fatal error: Uncaught exception 'OzonException' with message 'Cannot parse catalog links' in ПУТЬ\src\Ozon.php:49 Stack trace: #0 ПУТЬ\web\index.php(11): Ozon::getCatalogList(3) #1 {main} thrown in ПУТЬ\src\Ozon.php on line 49

Как я понял, это связано с разбиранием строки по regexp

if(preg_match_all('/<li><a href="\/context\/(?P<links>[^"]+)" title="(?P<title>[^"]+)">/',

$browser->content, $matches)) {

в файле src\Ozon.php (строка 43). То есть к нему прходит не верный $browser->content.

Если сделать

echo ($browser->content);

выводися абра-дабабра всякая. Причем это явно не CP1251 и не UTF-8. И, как следствие, regexp не может ничего найти...

Попробовал сам понять в чем дело, но возможно, не хватает знаний.

Помогите... как получить весь список ?

Заранее благодарен.

СД
На сайте с 21.03.2009
Offline
28
#17
Houston:
Помогите разобраться.

Есть парсер 1.15 от Стас Давыдов (http://stasdavydov.com/ozonru-parser/).
Установлен на Windows Server 2003, PHP 5.2.14.
...

Если сделать
echo ($browser->content);
выводися абра-дабабра всякая. Причем это явно не CP1251 и не UTF-8. И, как следствие, regexp не может ничего найти...

Попробовал сам понять в чем дело, но возможно, не хватает знаний.

Помогите... как получить весь список ?

Заранее благодарен.

Привет!

Чтобы все заработало, нужно указать кодировку:

$transformer->transform($catalog,

array('PAGENUM'=>$page, 'PARTNER'=>$PARTNER_ID, 'URL_PARAMS'=>'path='.urlencode($path),

'PATH'=>urlencode($path), 'encoding' => 'windows-1251'));

Внес исправление в файлы дистрибутива. Спасибо за информацию.

H
На сайте с 04.03.2008
Offline
22
#18
Стас Давыдов:

Чтобы все заработало, нужно указать кодировку:

$transformer->transform($catalog,
array('PAGENUM'=>$page, 'PARTNER'=>$PARTNER_ID, 'URL_PARAMS'=>'path='.urlencode($path),
'PATH'=>urlencode($path), 'encoding' => 'windows-1251'));

Возможно вы меня не верно поняли.

Если брать пример web/catalog.php, где для примера выводятся навигаторы - там все понятно. Там кодировка UTF-8.

Но интересует именно "Все каталоги Озон.ру", которые должны открываться на web/index.php.

Если я правильно понимаю, то логика такая:

Идем на сайт http://www.ozon.ru/

Получаем исходный код страницы

Разбираем его по regexp '/<li><a href="\/context\/(?P<links>[^"]+)" title="(?P<title>[^"]+)">/'

Получаем наименование и имя каталога первого уровня.

Далее идем по этим каталогам и получаем 2-ой уровень

Далее 3-й.

Так вот... Когда получаем исходный код для парсинга первого уровня, то он приходит (или где-то внутри обрабатывается) для regexp какой-то странный. Ни UTF-8, ни CP-1251.

А как понял $transformer->transform - работает именно с xml-файлами, которые забирает по указанному пути с сайта. То есть не относится к разбиранию исходного кода сайта для отображения списка каталогов.

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

Стас Давыдов:

Внес исправление в файлы дистрибутива. Спасибо за информацию.

Спасибо. Только вот вопросик... на странице http://stasdavydov.com/ozonru-parser/ лежит все таже версия 1.15. Причем сравнил файлы - они такие же, как и до внесения вами исправлений. Может я где-то не на той странице смотрю или вы выкладываете версии, когда накопится какое-то значимое количество исправлний?

СД
На сайте с 21.03.2009
Offline
28
#19
Houston:
Возможно вы меня не верно поняли.
Если брать пример web/catalog.php, где для примера выводятся навигаторы - там все понятно. Там кодировка UTF-8.
Но интересует именно "Все каталоги Озон.ру", которые должны открываться на web/index.php.

Если я правильно понимаю, то логика такая:
Идем на сайт http://www.ozon.ru/
Получаем исходный код страницы
Разбираем его по regexp '/<li><a href="\/context\/(?P<links>[^"]+)" title="(?P<title>[^"]+)">/'
Получаем наименование и имя каталога первого уровня.
Далее идем по этим каталогам и получаем 2-ой уровень
Далее 3-й.

Да, так и есть.

Houston:
Так вот... Когда получаем исходный код для парсинга первого уровня, то он приходит (или где-то внутри обрабатывается) для regexp какой-то странный. Ни UTF-8, ни CP-1251.

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

Houston:
А как понял $transformer->transform - работает именно с xml-файлами, которые забирает по указанному пути с сайта. То есть не относится к разбиранию исходного кода сайта для отображения списка каталогов.

XML-каталоги скачиваются отдельно. Для отображения web/index.php они не используются. Там вообще нет ничего, кроме ссылок.

Вот, посмотрите: http://stasdavydov.com/ozonru-parser/test/web/index.php.

Houston:
Спасибо. Только вот вопросик... на странице http://stasdavydov.com/ozonru-parser/ лежит все таже версия 1.15. Причем сравнил файлы - они такие же, как и до внесения вами исправлений. Может я где-то не на той странице смотрю или вы выкладываете версии, когда накопится какое-то значимое количество исправлний?

Новой версии не было.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий