Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Творческая задача. html -> DB  (Прочитано 7727 раз)
0 Пользователей и 5 Гостей смотрят эту тему.
Chuda
Гость
« : 27-06-2006 06:54 » 

Дано:
Интернет-магазин. 12 тысяч товаров. Описания на каждый товар в отдельном файле html. Причём файлы эти включают в себя как информацию о товаре, так и оформление. То есть, в случае например необходимости исправить дизайн странички с описанием товара, придётся править вручную отдельно каждую из 12 тысяч страниц.
Вот сам этот интернет-магазин: http://www.comptorg.ru , если интересно, посмотрите там описание любого товара, выскакивающее в отдельном окошке.
Осознаём, что таким образом содержать информацию о товаре крайне неправильно. Но поступает она именно в таком виде - в файлах html. Параметры у каждого товара свои, то есть, например, про принтер пишут, цветной или чб, лезерный/струйный, скорострельность, а про процессор - тактовая частота, кэш, сокет.
Надо из такой вот кучи файлов html создать нормальную человеческую базу данных, выдрав из файлов полезную информацию.
Как это сделать - у меня пока соображений мало.
Прошу уважаемое сообщество поделиться идеями.
Записан
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 27-06-2006 08:52 » 

Я бы сначала вытащил из HTML информацию об атрибутах предмета, затем провёл систематизацию видов атрибутов, после чего можно сделать схему БД и загнать в неё информацию о товарах

Вынимать инфу о товарах можно при помощи XSLT
Сведения о товарах будем представлять в XML файлах такой структуры:
Код:
<item>
  <itemname>Имя товара</itemname>
  <property><name>Имя свойства (описание, цвет и т.п.)</name><value>Значение свойства</value></property>
  <property>...</property>
</item>

Вот файл трансформаций, который по HTML строит XML:
Код:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="xml" encoding="windows-1251" indent="yes"/>
  <xsl:template match="/">
    <xsl:element name="item">
      <xsl:apply-templates/>
      <xsl:text>
</xsl:text>
    </xsl:element>
  </xsl:template>
  <xsl:template match="td/table/tr[position() mod 2 = 0 and not(position()=last()) ]">
    <xsl:if test="td[1]/text()">
      <xsl:text>
</xsl:text>
      <property>
        <name>
          <xsl:value-of select="normalize-space(string(td[1]/text()))"/>
        </name>
        <value>
          <xsl:value-of select="td[2]//text()"/>
        </value>
      </property>
    </xsl:if>
  </xsl:template>
  <xsl:template match="td/text()" mode="print">
    <xsl:copy>
      <xsl:apply-templates mode="print"/>
    </xsl:copy>
  </xsl:template>
  <xsl:template match="title"/>
  <xsl:template match="div[@class='header']">
    <xsl:text>
</xsl:text>
    <itemname>
      <xsl:value-of select="text()"/>
    </itemname>
  </xsl:template>
  <xsl:template match="text()"/>
</xsl:stylesheet>

Вот результат применения:
Цитата
<?xml version="1.0" encoding="windows-1251"?>
<item>
<itemname>Комплет обложек для термопереплета [FS-53156] А4, картон, 12мм (50 шт) + 15мм (30 шт) + 18мм (20 шт)</itemname>
<property><name>Описание</name><value>Обложка для термоплёта</value></property>
<property><name>Формат</name><value>А4</value></property>
<property><name>Цвет</name><value>Белая</value></property>
<property><name>Ширина корешка</name><value>12/15/18 мм</value></property>
<property><name>Материал</name><value>Верх-прозрачный поливинилхлорид, низ-глянцевый картон</value></property>
<property><name>Кол-во в упаковке</name><value>50/30/20 шт</value></property>
<property><name>Сайт производителя</name><value>www.fellowes.com</value></property>
</item>

Работает как минимум в xsltproc (http://xmlsoft.org/XSLT/xsltproc2.html)
« Последнее редактирование: 17-12-2007 17:37 от Алексей1153++ » Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Шнибл
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 27-06-2006 08:59 » 

оффтоп.
Описание товара как на сайте http://www.netlab.ru/products/prices/ меня вполне устраивает, и самое интерессное, что я встречал еще на нескольких сайтах именно такое же описание, что наводит на мысль, о том что возможно есть некая общая база...
Записан
Chuda
Гость
« Ответ #3 : 27-06-2006 16:42 » 

например ultra-online.ru
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines