<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta>
      <journal-title-group>
        <journal-title>Series</journal-title>
      </journal-title-group>
      <issn pub-type="ppub">1613-0073</issn>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Extracting Product Data from E-Shops</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Peter Gurský</string-name>
          <email>peter.gursky@upjs.sk</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Vladimír Chabal'</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Róbert Novotný</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Michal Vaško</string-name>
          <email>michal.vasko@upjs.sk</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Milan Verešcˇák</string-name>
          <email>milan.verescak@upjs.sk</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Institute of Computer Science Univerzita Pavla Jozefa Šafárika Jesenná 5</institution>
          ,
          <addr-line>040 01 Košice</addr-line>
          ,
          <country country="SK">Slovakia</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2014</year>
      </pub-date>
      <volume>1214</volume>
      <fpage>40</fpage>
      <lpage>45</lpage>
      <abstract>
        <p>We present a method for extracting product data from e-shops based on annotation tool embedded within web browser. This tool simplifies automatic detection of data presented in tabular and list form. The annotations serve as a basis for extraction rules for a particular web page, which are subsequently used in the product data extraction method.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Since the beginnings, web pages have served for
presentation of information to human readers. Unfortunately, not
even advent of the semantic web, which has been with us
for more than ten years, was able to successfully solve the
problem of structured web data extraction from web pages.
Currently, there are various approaches to web extraction
methods for information that was not indented for machine
processing.</p>
      <p>The scope of Kapsa.sk project is to retrieve information
contained within e-shop products by crawling and
extracting data and presenting it in a unified form which
simplifies the user’s decision of preferred products.</p>
      <p>The result of crawling is a set of web pages that contain
product details. As a subproblem, the crawler identifies
pages that positively contain product details, and ignores
other kind of pages.</p>
      <p>A typical e-shop contains various kinds of products.
Our goal is to retrieve as much structured data about
product as possible. More specifically, this means retrieving
their properties or attributes including their values. We
have observed that each kind of product, called domain
has a different set of attributes. For example, a domain of
television set has such attributes as display size, or refresh
rate. On the other hand, these attributes will not appear
in the domains of washing machines or bicycles.
However, we can see that there are certain attributes which are
common to all domains, such as product name, price or
quantity in stock. We will call such attributes to be domain
independent. Often, the names of domain independent
attributes are implicit or omitted in the HTML code of a web
page (price being the most notorious example).</p>
      <p>Since the number of product domains can be fairly large
(tens, even hundreds), we have developed an extraction
system, in which it is not necessary to annotate each
product domain separately. In this paper, we present a method
which extracts product data from a particular e-shop and
requires annotation of just single page. Furthermore, many
annotation aspects are automatized within this process.
The whole annotation proceeds within a web browser.
2</p>
    </sec>
    <sec id="sec-2">
      <title>State of the Art</title>
      <p>
        The area of web extraction systems is well-researched.
There are many surveys and comparisons of the existing
systems [
        <xref ref-type="bibr" rid="ref1 ref2 ref3 ref4">1, 2, 3, 4</xref>
        ]. The actual code that extracts relevant
data from a web page and outputs it in a structured form
is traditionally called wrapper [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Wrappers can be
classified according to the process of creation and method of
use into the following categories:
• manually constructed systems of web information
extraction
• automatically constructed systems requiring user
assistance
• automatically constructed systems with a partial user
assistance
• fully automatized systems without user assistance
2.1
      </p>
      <sec id="sec-2-1">
        <title>Manually Constructed Web Information</title>
      </sec>
      <sec id="sec-2-2">
        <title>Extraction Systems</title>
        <p>
          Manually constructed systems generally require the use
of a programming language or define a domain-specific
language (DSL). Wrapper construction is then equivalent
to wrapper programming. The main advantage lies in the
easy customization for different domains, while the
obvious drawback is the required programming skill (which
may be made ease by lesser complexity of a particular
DSL). The well-known systems are MINERVA [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ],
TSIMMIS [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] and WEBOQL [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ]. The OXPATH [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ] language
is a more recent extension of the XPath language
specifically targeted to information extraction, crawling and web
browser automation. It is possible to fill the forms, follow
the hyperlinks and create iterative rules.
2.2
        </p>
      </sec>
      <sec id="sec-2-3">
        <title>Automatically Constructed Web Extraction</title>
      </sec>
      <sec id="sec-2-4">
        <title>Systems Requiring User Assistance</title>
        <p>
          These systems are based on various methods for automatic
wrapper generation (also known as wrapper induction),
mostly using machine learning. This approach usually
requires an input set of manually annotated examples (i. e.
web pages), where additional annotated pages are
automatically induced. A wrapper is created according to the
presented pages. Such approaches do not require any
programming skills. Very often, the actual annotation is
realized within the GUI. On the other hand, the annotation
process can be heavily domain-dependent and web page
depended and may be very demanding. Tools in this category
include WIEN [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ], SOFTMEALY [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] and STALKER [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ].
2.3
        </p>
      </sec>
      <sec id="sec-2-5">
        <title>Automatically Constructed Web Extraction</title>
      </sec>
      <sec id="sec-2-6">
        <title>Systems With Partial User Assistance</title>
        <p>
          These tools use automated wrapper generation methods.
They tend to be more automated, and do not require users
to fully annotate sample web pages. Instead, they work
well with partial or incomplete pages. One approach is
to induce wrappers from these samples. User assistance
is required only during the actual extraction rule creation
process. The most well-known tools are IEPAD [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ],
OLERA [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] and THRESHER [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ].
2.4
        </p>
      </sec>
      <sec id="sec-2-7">
        <title>Fully Automatized Systems Without User</title>
      </sec>
      <sec id="sec-2-8">
        <title>Assistance</title>
        <p>
          A typical tool in this group aims to fully automate the
extraction process with no or minimal user assistance. It
searches for repeating patterns and structures within a web
page or data records. Such structures are then used as
a basis for a wrapper. Usually, they are designed for
web pages with a fixed template format. This means that
extracted information needs to be refined or further
processed. Example tools in this category are
ROADRUNNER [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ], EXALG [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ] or approach used by Marušcˇák et
al. [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ].
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Web Extraction System within Kapsa.sk</title>
    </sec>
    <sec id="sec-4">
      <title>Project</title>
      <p>Our design focuses on an automatically constructed web
information extractor system with a partial user assistance.
We have designed an annotation tool, which is used to
annotate the relevant product attributes occurring on a
sample page from a single e-shop. Each annotated product
attribute corresponds to an element within the HTML tree
structure of the product page, and can be uniquely
addressed by an XPath expression optionally enriched with
regular expressions.</p>
      <p>
        Then, we have observed that many e-shops generate
product pages from a server-side template engine. This
means that in many cases, XPath expressions that address
relevant product attributes remain the same. Generally,
this allows us to annotate the data only once, on a suitable
web page. (See Figure 1). To ease an effort of annotation,
we discover the repeating data regions with the modified
MDR algorithm [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] described in the section 5.1).
      </p>
      <p>The result of the annotation process is an extractor
(corresponding to the notion of a wrapper) represented as a set
of extraction rules. In the implementation, we represent
these rules in JSON, thus making them independent from
the annotation tool. (see section 4 for more information).</p>
      <p>
        This way, we are able to enrich the manual annotation
approach with a certain degree of automation. Further
improvements on ideas from other solutions are based on
addressing HTML elements with product data not only
with XPath (an approach used in OXPATH [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]), but also
with regular expression. It is known that some product
attributes may occur in a single HTML element in a
semistructured form (for example as a comma-delimited list).
Since XPath expressions are unable to address such
nonatomic values, we use the regular expressions to reach
below this level of coarseness. Although a similar approach
is used in the W4F [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ], we have built upon similar ideas
and we are presenting them in our web-browser-based
annotation tool. Furthermore, we allow the use of the
modified MDR algorithm to detect the repeating regions.
4
      </p>
    </sec>
    <sec id="sec-5">
      <title>Extractors – The Fundament of</title>
    </sec>
    <sec id="sec-6">
      <title>Annotation</title>
      <p>4.1</p>
      <sec id="sec-6-1">
        <title>Extraction Rules</title>
        <p>
          In the first step of annotation, an extractor is constructed.
It is composed from one or multiple extraction rules, each
corresponding to an object attribute. All extraction rules
have two common properties:
1. They address a single HTML element on a web page
that contains the extracted value. The addressing is
represented by an XPath expression.
2. The default representation of the extraction rule in
both annotation and extraction tools is JSON.
/* -- Rule with fixed attribute name */
"type": "label-and-manual-value",
"xpath": "//*[contains(@class,\"name\")]/h1",
"label": "Name"
},
{
/* -- list (table rows) -- */
"type": "list",
"xpath": ’//*[contains(@class,\"columns\")]/table/tbody/tr’,
"label": "N/A"
"items": [
{
"type": "label-and-value",
"labelXPath": "td[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]",
"xpath": "td[
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]"
}]}]}}
        </p>
      </sec>
      <sec id="sec-6-2">
        <title>4.2 Types of Extraction Rules</title>
        <p>The value with fixed name rule is used to extract one
(atomic) value along with a predefined attribute name.
Usually, this attribute is specified via the graphic user
interface of the annotation tool. Alternatively, this is
specified as the name of well-known domain-independent
attribute. See Figure 2, rule label-and-manual-value for
an example.</p>
        <p>The value with extracted name expands upon the previous
rule. The name of the extracted attribute is defined by an
additional XPath expression that corresponds to an HTML
element that contains attribute name (e. g. string Price).
The example in Figure 2 uses the label-and-value
extraction rule.</p>
        <p>The complex rule is a composition (nesting) of other rules.
This allows to define extractor for multiple values,
usually corresponding to attributes of the particular product.
Whenever the complex rule contains an XPath expression
(addressing a single element), all nested rules use this
element as a context node. In other words, nested rules
can specify their XPath expression relative to this element.
The example uses the extraction rule declared as complex.
Usually, a complex rule is a top-level rule in an extractor.
The list rule is used to extract multiple values with a
common ancestor addressed by an XPath expression. This
expression then corresponds to multiple HTML subtrees.
This rule must contain one or more nested extraction rules.
A typical use is to extract cells in table rows (by nesting
a rule for extracted name). In the example, we use the
extraction rule declared as a list.</p>
        <p>An extractor defined by rule composition (i. e. with
the complex rule) is specifically suited for data extraction
not only from a particular web page (as implemented in the
user interface, see section 6), but also for any other product
pages of a particular e-shop. In this case, no additional
cooperation with annotation tool is required.</p>
        <p>The annotation of domain-independent values is
usually realized with the value with fixed name rule, since the
attribute name is not explicitly available within a HTML
source of the web page.</p>
        <p>Domain-dependent attributes (which are more frequent
than the domain-independent ones) usually occur in a
visually structured "tabular" form. The annotation
automatization process described in the next section, allows us to
infer a list rule along with a nested
value-with-extractedname rule. This combination of rules is sufficient to
extract product data from multiple detail on web pages.
Furthermore, this particular combination supports attribute
permutation or variation. Therefore, we can successfully
identify and extract attributes that are swapped, or even
omitted on some web pages. This feature allows us to
create wrappers that are suitable for all product domains of an
e-shop.</p>
        <p>Moreover, this set of extraction rules may be further
expanded. We may specify additional rules that support
regular expressions along with the XPath or we may possibly
support the extraction of attribute values from web page
metadata, e. g. the product identifier specified within an
URL of the web page.
5</p>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>Automatizing Annotation Process</title>
      <p>As we have mentioned in the previous section, we aim to
make the annotation process easier and quicker. A product
page often uses either tabular or list forms, which visually
clarify complex information about many product
properties (see Figure 4). We will call such form a data record
denoting a regularly structured object within a web page,
containing product attributes, user comments etc.</p>
      <p>
        Within the annotation tool, we need to nest a
value-withextracted-name within a list-based rule. Unfortunately, it
is quite difficult to address an element which contains list
items by a mouse click. Although it is possible to directly
create an XPath expression, this requires advanced skills in
this language and knowledge of the HTML tree structure
of the annotated web page. Therefore, we identify such list
elements automatically by using the modified MDR
algorithm. To recall, the classic MDR algorithm [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] is based
on the Levenshtein string distance and on two observations
on HTML element relationships within a web page.
1. Data records occur next to each other or in the
close vicinity of each other. Moreover, they are
presented with similar or identical formatting
represented within HTML elements. Such data records
constitute a data region (see Figure 3). Since HTML
elements can be transformed into string
representations, we can easily use the Levenshtein string
distance.
2. HTML elements are naturally tree-based. Therefore,
two similar data records have similar levels of nesting
and share the same parent HTML element.
Bottom-up approach. The classical MDR algorithm
traverses the HTML tree in the top-down direction and
searches the data regions in the whole HTML document.
Our modification uses the bottom-up approach: we start
with an element annotated by the user and move upwards
to the root element. This user annotation denotes the
starting point for further comparisons, which removes the need
for many computation steps.
Supporting shallow trees. The MDR algorithm has a
limited use for shallow tree data regions. (The original
authors state minimal limit of four layers.) However,
attributes or user comments very often occur in such shallow
trees. For example, a user comment occurring in element
&lt;div id="comment3787" class="hbox comment" in
the classical MDR is transformed into the string div. It is
obvious that such a string is too frequent in the HTML
page, and therefore the Levenshtein distance cannot be
used. We improve the string transformation by
considering not only the name of the element, but also some of its
attributes. In our example, the element is transformed into
the string div.hbox.comment. This vastly improves the
efficiency of the comparison in shallow trees.
      </p>
      <p>Slicing tree by levels. The classical MDR algorithm
transforms elements into strings by the depth-first traversal.
This means, that a subtree of an element is represented
as a string, which is used in the Levenshtein distance. In
our approach, we slice the subtree into levels, transform
them into strings and subsequently calculate the distance
for each of these strings. The total distance is calculated
from the partial distances for each layer.</p>
      <p>
        Example 1. Consider the example in Figure 3. The
classical MDR algorithm transforms the HTML tree into the
following strings: [
        <xref ref-type="bibr" rid="ref10 ref2 ref5 ref6 ref7 ref8 ref9">2, 5, 6, 7, 8, 9, 10</xref>
        ] and [
        <xref ref-type="bibr" rid="ref11 ref12 ref13 ref14 ref15 ref16 ref17 ref18 ref4">4,
11, 12, 13, 14, 15, 16, 17, 18</xref>
        ], which are then
compared.
      </p>
      <p>
        In our modification, we slice the tree by levels and
create the following strings: first layer transforms to [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] and
[
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], the second layer transforms to [
        <xref ref-type="bibr" rid="ref10 ref5 ref6 ref7 ref8 ref9">5, 6, 7, 8, 9,
10</xref>
        ] and [
        <xref ref-type="bibr" rid="ref11 ref12">11, 12</xref>
        ], and final layer maps to [] and [
        <xref ref-type="bibr" rid="ref13 ref14 ref15 ref16 ref17 ref18">13,
14, 15, 16, 17, 18</xref>
        ]. Then, each pair is compared
according to Algorithm 1.
      </p>
      <p>The slicing approach has a positive effect on time and
space complexity. This method needs not to compare
elements in different layers (which usually are not related
at all), and simultaneously does not decrease the distance
between subtrees.</p>
      <p>Removing non-structure elements. In the transformation
process, we intentionally ignore elements which do not
define a document structure. We omit purely formatting
elements, such as b, i, tt, abbr etc.</p>
      <p>The algorithm for searching similar elements (see
Algorithm 1) retrieves a set of elements A. Each element of this
set is compared to an element E and return a set of similar
elements, while using the similarity threshold P. For each
element Y from set A, the algorithm computes the
similarity of a subtree of element Y with a subtree of element E,
level-by-level. This level-wise slicing computes two sets
of elements denoted as Zx and Zy. A similarity score is
computed as a ratio of edit distance to number of elements
that were compared.</p>
      <p>The resulting score is a value between 0 and 1, ranging
from identical subtress to completely different subtrees.
This value is compared with the pre-set threshold P.
Algorithm 1 Searching similar elements
Let A be an element set in which we search a similar
element.</p>
      <p>Let E be an element for which we search a similar element.
Let P be a similarity threshold.</p>
      <p>function SEARCH_SIMILAR_ELEMENTS(A, E, P)
similar ← []
for Y in A do
i ← 0
score ← 0
c ← 0 . number of elements for comparison
while exists i-th level in E or in Y do</p>
      <p>Zx ← elements_in_level(i, E)
Zy ← elements_in_level(i, Y)
score ← score + Levenshtein(Zx, Zy)
c ← c + max(length(Zx), length(Zy))
i ← i + 1
score = score/c
end while
if score ≤ P then</p>
      <p>add element Y to result
end if
end for
return result
end function
5.2</p>
      <sec id="sec-7-1">
        <title>Annotation in the Annotation Tool</title>
        <p>The process of annotation of tabular or list-based attributes
is initiated by marking a single attribute value (by
clicking on the particular highlighted element in the annotation
tool). Then, the similar subtrees are discovered in the
surroundings of this element. We start with the parent and
run the algorithm for similar elements. If no similar
elements are found on this level, we emerge at the parent
level. Then, we rerun the algorithm for similar elements,
until we find a level in which there exist elements that
define all product attributes.</p>
        <p>If we find similar elements on an incorrect level (for
example, it is necessary to create a list rule based on the
parent or ancestor of discovered elements, or it is desired
to dive one level deeper), we have a possibility to manually
move above or below the discovered elements. Effectively,
this allows for increasing or decreasing the level of the
discovered element, for which we create the list rule.</p>
        <p>Beside the element with a product value, we need to
annotate an element with an attribute name. Whenever any of
subtrees generated by the list-based rule contains exactly
two text elements, and one of these elements is annotated
as an attribute name, the remaining element is considered
as the attribute name element. Otherwise, a manual
annotation assisted by the user is required.
6</p>
      </sec>
    </sec>
    <sec id="sec-8">
      <title>User Interface for Annotations</title>
      <p>Extraction rules defined in section 4 and attribute
discovery can be achieved in the annotation tool implemented as
the add-on EXAGO suitable for Mozilla Firefox browser
(see Figure 4). This open-source and multiplatform tool
(in comparison with commercial tools like MOZENDA,
VISUAL WEB RIPPER, DEIXTO) represents a simple and
practical user interface. We support a preview of the
extractors based on the attribute discovery or manual
annotations in the JSON representation.</p>
      <p>The usual workflow includes visiting a web page of
a particular product and annotating product attributes, thus
declaring an extractor structure in the background (see
example on Figure 2).</p>
      <p>
        The declared extractor can be used in two ways: it can
be immediately executed within the browser context, thus
extracting product values from the web page. This data can
be consequently sent to the server-side database for further
processing. Otherwise, the JSON representation of the
extractor can be sent to the server middleware. The
extraction process can be performed independently on the server
by one of the more advanced extraction techniques [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ].
7
      </p>
    </sec>
    <sec id="sec-9">
      <title>Conclusion and Future Work</title>
      <p>We have presented a tool for annotating attributes of
product in e-shops. We have defined a language of
extraction rules, which are created either with the assistance
of the user or are automatically inferred by the modified
MDR algorithm. Extraction rules along with the algorithm
were implemented as an add-on for Mozilla Firefox web
browser.</p>
      <p>The future research will be focused on further
extension of the modified MDR algorithm, which will search
for data regions in web pages. Besides, we will aim to
implement the product page identification on the server-side
and extend the extraction methods in order to support the
pagination and tabs within a single web page.</p>
      <p>This research was supported by the Agency of the
Ministry of Education, Science, Research and Sport of the
Slovak Republic for the Structural Funds of European Union,
by project ITMS 26220220182.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>C.-H.</given-names>
            <surname>Chang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Kayed</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.R.</given-names>
            <surname>Girgis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.F.</given-names>
            <surname>Shaalan</surname>
          </string-name>
          :
          <article-title>A Survey of Web Information Extraction Systems</article-title>
          . IEEE Trans.
          <article-title>Knowledge and Data Eng</article-title>
          ., vol.
          <volume>18</volume>
          , no.
          <issue>10</issue>
          , pp.
          <fpage>1411</fpage>
          -
          <lpage>1428</lpage>
          , Oct.
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Doan</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <article-title>Halevy: Semantic integration research in the database community: A brief survey</article-title>
          .
          <source>AI magazine</source>
          ,
          <year>2005</year>
          ,
          <volume>26</volume>
          (
          <issue>1</issue>
          ): p.
          <fpage>83</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>B.</given-names>
            <surname>Liu</surname>
          </string-name>
          :
          <article-title>Web Data Mining: Exploring Hyperlinks, contents and Using Data, Second edition</article-title>
          ,
          <source>Springer 2011. ISBN 978- 3-642-19459-7</source>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>E.</given-names>
            <surname>Ferrara</surname>
          </string-name>
          , G. Fiumara,
          <string-name>
            <given-names>R.</given-names>
            <surname>Baumgartner</surname>
          </string-name>
          .
          <article-title>Web Data Extraction, Applications and Techniques: A Survey</article-title>
          .
          <source>Tech. Report</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>V.</given-names>
            <surname>Crescenzi</surname>
          </string-name>
          ,
          <string-name>
            <surname>G.</surname>
          </string-name>
          <article-title>Mecca: Grammars have exceptions</article-title>
          .
          <source>Information Systems</source>
          ,
          <volume>23</volume>
          (
          <issue>8</issue>
          ):
          <fpage>539</fpage>
          -
          <lpage>565</lpage>
          ,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>J.</given-names>
            <surname>Hammer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. McHugh</given-names>
            ,
            <surname>Garcia-Molina</surname>
          </string-name>
          :
          <article-title>Semi-structured data: the TSIMMIS experience</article-title>
          .
          <source>In Proceedings of the 1st East-European Symposium on Advances in Databases and Information Systems (ADBIS)</source>
          ,
          <source>St. Petersburg, Russia</source>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>8</lpage>
          ,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>G. O.</given-names>
            <surname>Arocena</surname>
          </string-name>
          ,
          <string-name>
            <surname>A. O.</surname>
          </string-name>
          <article-title>Mendelzon: WebOQL: Restructuring documents, databases, and Webs</article-title>
          .
          <source>Proceedings of the 14th IEEE International Conference on Data Engineering (ICDE)</source>
          , Orlando, Florida, pp.
          <fpage>24</fpage>
          -
          <lpage>33</lpage>
          ,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>N.</surname>
          </string-name>
          <article-title>Kushmerick: Wrapper induction for information extraction</article-title>
          ,
          <source>PhD Thesis</source>
          .
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>C.</given-names>
            <surname>Hsu</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.</surname>
          </string-name>
          <article-title>Dung: Generating finite-state transducers for semi-structured data extraction from the Web</article-title>
          .
          <source>Information Systems</source>
          ,
          <year>1998</year>
          ,
          <volume>23</volume>
          (
          <issue>8</issue>
          ): p.
          <fpage>521</fpage>
          -
          <lpage>538</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>Muslea</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Minton</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <article-title>Knoblock: A hierarchical approach to wrapper induction</article-title>
          .
          <source>In Proceedings of Intl. Conf. on Autonomous Agents (AGENTS-1999</source>
          )
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>C.-H. Chang</surname>
          </string-name>
          , S.-C.
          <article-title>Lui: IEPAD: Information extraction based on pattern discovery</article-title>
          .
          <source>Proceedings of the Tenth International Conference on World Wide Web (WWW)</source>
          ,
          <source>HongKong</source>
          , pp.
          <fpage>223</fpage>
          -
          <lpage>231</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>C.-H. Chang</surname>
          </string-name>
          , S.-C.
          <article-title>Kuo: OLERA: A semi-supervised approach for Web data extraction with visual support</article-title>
          .
          <source>IEEE Intelligent Systems</source>
          ,
          <volume>19</volume>
          (
          <issue>6</issue>
          ):
          <fpage>56</fpage>
          -
          <lpage>64</lpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Hogue</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <article-title>Karger: Thresher: Automating the Unwrapping of Semantic Content from the World Wide</article-title>
          .
          <source>Proceedings of the 14th International Conference on World Wide Web (WWW)</source>
          , Japan, pp.
          <fpage>86</fpage>
          -
          <lpage>95</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>V.</given-names>
            <surname>Crescenzi</surname>
          </string-name>
          , G. Mecca, P. Merialdo:
          <article-title>RoadRunner: towards automatic data extraction from large Web sites</article-title>
          .
          <source>Proceedings of the 26th International Conference on Very Large Database Systems (VLDB)</source>
          , Rome, Italy, pp.
          <fpage>109</fpage>
          -
          <lpage>118</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>Arasu</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          <string-name>
            <surname>Garcia-Molina</surname>
          </string-name>
          :
          <article-title>Extracting structured data from Web pages</article-title>
          .
          <source>Proceedings of the ACM SIGMOD International Conference on Management of Data</source>
          , San Diego, California, pp.
          <fpage>337</fpage>
          -
          <lpage>348</lpage>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>D. Marušcˇák</surname>
          </string-name>
          , R. Novotný, P. Vojtáš:
          <article-title>Unsupervised Structured Web Data and Attribute Value Extraction</article-title>
          .
          <source>Proceedings of Znalosti</source>
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>B.</given-names>
            <surname>Liu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Grossman</surname>
          </string-name>
          ,
          <string-name>
            <surname>Y.</surname>
          </string-name>
          <article-title>Zhai: Mining Data Records in Web Pages</article-title>
          .
          <source>In: Proc S IGKDD</source>
          .
          <volume>03</volume>
          ,
          <string-name>
            <surname>August</surname>
          </string-name>
          24-
          <issue>27</issue>
          ,
          <year>2003</year>
          , Washington, DC, USA.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>V.</given-names>
            <surname>Chabal</surname>
          </string-name>
          <article-title>': Poloautomatická extrakcia komentárov z produktových katalógov</article-title>
          .
          <source>Diploma Thesis</source>
          . Defended on P. J. Šafárik University, Košice,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>P.</given-names>
            <surname>Gurský</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Novotný</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Vaško</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.</surname>
          </string-name>
          <article-title>Verešcˇák: Obtaining product attributes by web crawling</article-title>
          .
          <source>WIKT '13: Proc. of the 8th Workshop on Intelligent and Knowledge Oriented Technologies</source>
          , pp.
          <fpage>29</fpage>
          -
          <lpage>34</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>T.</given-names>
            <surname>Furche</surname>
          </string-name>
          , G. Gottlob, G. Grasso,
          <string-name>
            <given-names>C.</given-names>
            <surname>Schallhart</surname>
          </string-name>
          ,
          <string-name>
            <surname>A.</surname>
          </string-name>
          <article-title>Sellers: OXPath: A language for scalable data extraction, automation, and crawling on the deep web</article-title>
          .
          <source>The VLDB Journal</source>
          <volume>22</volume>
          (
          <issue>1</issue>
          ):
          <fpage>47</fpage>
          -
          <lpage>72</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>A.</given-names>
            <surname>Saiiuguet</surname>
          </string-name>
          ,
          <string-name>
            <surname>F.</surname>
          </string-name>
          <article-title>Azavant: Building intelligent Web applications using lightweight wrappers</article-title>
          .
          <source>Data and Knowledge Engineering</source>
          <volume>36</volume>
          (
          <issue>3</issue>
          ):
          <fpage>283</fpage>
          -
          <lpage>316</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>