View
213
Download
0
Category
Preview:
Citation preview
LEANDRO SILVA ALONSO
AGENTE INTELIGENTE DE SHOPPINGCOMPARISON ATRAVEacuteS DE DETECCcedilAtildeO DE
PADROtildeES
LAVRAS - MG
2012
LEANDRO SILVA ALONSO
AGENTE INTELIGENTE DE SHOPPING COMPARISON ATRAVEacuteS DE
DETECCcedilAtildeO DE PADROtildeES
Monografia apresentada ao Colegiado doCurso de Ciecircncia da Computaccedilatildeo para aobtenccedilatildeo do tiacutetulo de Bacharel em Ciecircn-cia da Computaccedilatildeo
Orientador
Prof Dr Tales Heimfarth
Co-Orientador
Prof MSc Tiago Amador Coelho
LAVRAS - MG
2012
Dedicado a todos que fizeram parte dessa caminhada e especialmente a minha
famiacutelia e amigos
AGRADECIMENTOS
Agradeccedilo inicialmente aos meus pais Faustino Bisso Alonso Neto e
Maria Perpeacutetua da Silva Alonso por todo o apoio forccedila incentivo e
carinho E agrave minha irmatilde Letiacutecia Silva Alonso que mesmo distante
sempre se fez presente Sem vocecircs eu natildeo teria chegado ateacute aqui
Um imenso obrigado ao professor Ahmed com quem trabalhei todos
esses anos e aprendi muito Natildeo poderia deixar de mencionar meu
orientador Tiago que apoiou e contribuiu muito para este trabalho
Vocecircs foram os melhores que eu poderia encontrar
Agrave minha turma de Computaccedilatildeo (20081) fica meu muito obrigado e
um ateacute logo por todos os momentos vividos
Aos meus companheiros de trabalho do NTE e do LICESA minha
imensa gratidatildeo por todo aprendizado e grandes momentos vividos
Jamais seratildeo esquecidos
Por fim agradeccedilo aos meus amigos que de uma forma ou de outra
fizeram parte dessa caminhada Muito obrigado
RESUMO
Os serviccedilos de comparaccedilatildeo de preccedilos chamados de Shopping Compari-son tecircm impactado o setor de comeacutercio online e oferecido informaccedilotildees de valorpara que o consumidor efetue decisotildees de compra
No entanto extrair os dados de muacuteltiplas lojas online mostra-se uma ta-refa natildeo trivial tendo em vista que documentos HTML satildeo semi-estruturados epossuem um baixo valor semacircntico
Neste trabalho propotildee-se um agente de Shopping Comparison ou Shopbotque atraveacutes da detecccedilatildeo de padrotildees em documentos HTML consegue determinaraonde estatildeo os produtos e seus atributos gerando um modelo reaproveitaacutevel capazde traduzir os dados semi-estruturados em informaccedilotildees
Os resultados indicam que o protoacutetipo desenvolvido eacute completamente viaacute-vel e mostrou-se funcional na maior parte das lojas analisadas
Palavras-chave Shopping Comparison Shopbot Web Content Mining
ABSTRACT
The Shopping Comparison services has impacted the online commerceand offered valuable information for the consumer to make purchasing decisions
However extract the data from multiple vendors is a nontrivial task consi-dering that HTML documents are semi-structured and have a low semantic value
In this work is proposed a Shopping Comparison agent or Shopbot thatby detecting patterns in HTML documents can determine where are the productsand his attributes generating a reusable model able to translate the semi-structureddata into valuable information
The results show that the prototype developed is entirely viable and provedto be functional in most vendors analyzed
Keywords Shopping Comparison Shopbot Web Content Mining
LISTA DE FIGURAS
Figura 1 Interpretaccedilatildeo de coacutedigo HTML pelo browser Google Chrome 15Figura 2 Reproduccedilatildeo de uma aacutervore DOM para um documento HTML 17Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e
Srivastava (1997) Juacutenior (2007) 20Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers
Fonte Yang et al (2000) 23Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e
Peng (2010) 25Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte
Yang et al (2000) 27Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em
bilhotildees) Fonte ebit (2011) 29Figura 8 Arquitetura do shopbot proposto 36Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fonte
httpvinaytechwordpresscom20081124ajax-and-dom 40Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em
forma de lista 41Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em
forma de grade 42Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo
do algoritmo poacutes-ordem 43Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos
em um mesmo anuacutencio 55Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios
diferentes 57Figura 15 Interface inicial do protoacutetipo 59Figura 16 Interface do protoacutetipo exibindo resultados para a busca por
ldquogalaxy noterdquo 60
LISTA DE QUADROS
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011) 19Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do
protoacutetipo 32Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do
protoacutetipo 33Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como
entrada para o shopbot 38Quadro 5 Exemplos de termos de busca natildeo adequados 39Quadro 6 Exemplos de termos de busca adequados 39Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore
exemplificada na FIGURA 12 43Quadro 8 Resultado da remoccedilatildeo de ruiacutedos 45Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes 48Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade 49Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de
dados inicialmente estabelecido 62Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10
lojas 63Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados
inicialmente estabelecido 64Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas 65
SUMAacuteRIO
1 Introduccedilatildeo 1111 Contextualizaccedilatildeo e Motivaccedilatildeo 1112 Objetivos 1313 Organizaccedilatildeo do Trabalho 132 Linguagem HTML 1421 HTML 1422 Document Object Model 1623 Seletores CSS 1724 HTML Parsers 183 Web Mining 2031 Web Content Mining 2132 Wrapper 234 Shopping Comparison 2541 Serviccedilos de Shopping Comparison 2542 Shopbot 2643 Impactos no Comeacutercio Eletrocircnico 295 Metodologia 3251 Meacutetodos 32511 Entendimento do Problema 3352 Material 34521 PHP 34522 phpQuery 34523 Ambiente Computacional 356 Arquitetura do Shopbot proposto 3661 Determinaccedilatildeo dos Termos de Busca adequados 37611 Detecccedilatildeo de Padrotildees 37612 Submissatildeo da URL e Termos de Busca 37613 Anaacutelise do HTML e Conversatildeo em Document Object Model 4062 Eliminaccedilatildeo de Ruiacutedos 4163 Ordenaccedilatildeo dos Resultados 4564 Geraccedilatildeo do Wrapper 48641 Formato do Wrapper 50642 Definindo Seletores CSS para os Anuacutencios 51643 Extraccedilatildeo do Tiacutetulo do Produto 51644 Extraccedilatildeo do Link do Produto 52645 Extraccedilatildeo do Parcelamento do Produto 53646 Extraccedilatildeo do Preccedilo do Produto 54
647 Extraccedilatildeo da Imagem do Produto 5665 Implementaccedilatildeo do Protoacutetipo 58651 Interface do Protoacutetipo 587 Resultados e Discussatildeo 6171 Resultados da Detecccedilatildeo de Padrotildees 6172 Resultados da Geraccedilatildeo de Wrapper 638 Conclusotildees e Trabalhos Futuros 66REFEREcircNCIAS 68
11
1 Introduccedilatildeo
11 Contextualizaccedilatildeo e Motivaccedilatildeo
A Era Digital tem inserido novas e importantes regras que regem a so-
ciedade moderna e o atual panorama socioeconocircmico Globalizaccedilatildeo competi-
ccedilatildeo informaccedilatildeo em grandes quantidades mudanccedilas constantes em curto espaccedilo
de tempo variedades de opccedilotildees e vaacuterios outros termos e efeitos dessa Era tecircm
surgido ao longo do tempo
Com a evoluccedilatildeo das tecnologias e o advento da Internet o comeacutercio se
modificou atraveacutes do surgimento do comeacutercio online tambeacutem chamado de e-
commerce ou comeacutercio virtual O consumidor antes limitado por barreiras ge-
ograacuteficas passou a ter acesso a um maior conjunto de lojas produtos e serviccedilos
atraveacutes da web
Segundo dados da empresa e-bit o comeacutercio eletrocircnico brasileiro alcan-
ccedilou um faturamento de R$ 187 bilhotildees em 2011 Um aumento de 26 em relaccedilatildeo
ao ano anterior quando o faturamento foi de R$ 148 bilhotildees O nuacutemero de consu-
midores que compraram pela web ao menos uma vez eacute de 32 milhotildees e apenas no
ano de 2011 foram efetuados 537 milhotildees de pedidos atraveacutes de 5000 lojas online
(EBIT 2011)
Atraveacutes das milhares de lojas o consumidor passou a ter mais opccedilotildees in-
formaccedilotildees e ofertas do que nunca Ele pode optar por fazer suas compras em gran-
des redes lojas virtuais especializadas cataacutelogos virtuais dentre outros meios E eacute
bombardeado com mensagens por diversos canais televisatildeo Internet raacutedio redes
sociais miacutedia impressa etc (MCKENNA 1999)
No entanto devido agrave imensuraacutevel quantidade de anuacutencios disponiacuteveis a
tarefa de escolher o produto desejado pelo melhor preccedilo torna-se demasiadamente
12
custosa Como um exemplo simples suponha-se um consumidor que deseja adqui-
rir uma TV LCD ele deve selecionar uma quantidade finita de lojas que conhece
buscar o produto desejado em cada loja e por fim cruzar os dados obtidos a fim
de encontrar o melhor custo-benefiacutecio Embora tal tarefa possa parecer simploacute-
ria ela se torna cada vez mais complexa agrave medida que mais lojas satildeo incluiacutedas na
pesquisa
Serviccedilos de Shopping Comparison se propotildeem a resolver esse problema
atraveacutes de um serviccedilo online baseado na web os consumidores podem encontrar
produtos preccedilos e outras informaccedilotildees de muacuteltiplas lojas online ao inveacutes de visitar
cada uma separadamente Os preccedilos e produtos satildeo apresentados na mesma inter-
face e o consumidor pode tomar a melhor decisatildeo sendo entatildeo redirecionado para
o fornecedor do produto para completar a transaccedilatildeo (WAN 2009)
Para que tais dados sejam apresentados eacute necessaacuterio que um agente de pes-
quisa de preccedilos chamado de Shopbot automaticamente pesquise uma coleccedilatildeo de
lojas online para coletar e comparar dados de um produto especificado (ZHANG
JING 2011) Entretanto natildeo existe uma padronizaccedilatildeo para a exibiccedilatildeo dos dados
dos produtos cada loja possui seu proacuteprio layout organizaccedilatildeo estrutural tecnolo-
gias etc Portanto desenvolver um bom agente de comparaccedilatildeo (shopbot) capaz
de coletar dados de muacuteltiplas fontes se torna uma tarefa natildeo trivial
A tarefa de descobrimento e anaacutelise de informaccedilotildees uacuteteis da World Wide
Web atraveacutes da busca automaacutetica de informaccedilatildeo de recursos disponiacuteveis online eacute
a definiccedilatildeo de Web Mining (COOLEY MOBASHER SRIVASTAVA 1997) Sendo este
trabalho portanto pertencente a essa linha de pesquisa
13
12 Objetivos
Este trabalho elabora um conjunto de regras e procedimentos para a de-
tecccedilatildeo de padrotildees identificaccedilatildeo de atributos extraccedilatildeo de dados em lojas de e-
commerce e geraccedilatildeo de um modelo geneacuterico e reaproveitaacutevel para cada fonte de
dados
Objetiva-se mensurar a eficiecircncia do modelo proposto em extrair dados
de produtos atraveacutes da implementaccedilatildeo de um protoacutetipo de shopbot que aplica tais
regras e procedimentos em uma aplicaccedilatildeo de Shopping Comparison
13 Organizaccedilatildeo do Trabalho
Este trabalho estaacute organizado da seguinte maneira
bull Os capiacutetulos 2 3 e 4 constituem o Referencial Teoacuterico deste trabalho No
capiacutetulo 2 tem-se a apresentaccedilatildeo de conceitos de HTML No capiacutetulo 3 eacute
realizada uma apresentaccedilatildeo sobre conceitos de Web Mining focando-se em
Web Content Mining Por fim no capiacutetulo 4 eacute dada uma definiccedilatildeo de Shop-
ping Comparison e Shopbot aleacutem dos seus impactos no comeacutercio online
bull O capiacutetulo 5 descreve a Metodologia utilizada no trabalho definindo os pro-
cedimentos metodoloacutegicos e as tecnologias utilizadas
bull No capiacutetulo 6 satildeo apresentados com detalhes as regras e procedimentos utili-
zados na construccedilatildeo do protoacutetipo de shopbot proposto neste trabalho desde
a elaboraccedilatildeo do algoritmo ateacute a interface do serviccedilo de Shopping Compari-
son
bull O capiacutetulo 7 conteacutem os resultados obtidos e algumas discussotildees a respeito
do que foi atingido
14
2 Linguagem HTML
A World Wide Web eacute uma imensa rede de informaccedilotildees Segundo o World
Wide Web Consortium a principal organizaccedilatildeo de padrotildees para a Internet a Web se
baseia em trecircs mecanismos que tornam esses recursos disponiacuteveis para o puacuteblico
mais amplo possiacutevel (CONSORTIUM 1999)
1 Um esquema de nomenclatura uniforme para a localizaccedilatildeo de recursos pre-
sentes na Web Ex Universal Resource Identifier ou URI
2 Protocolos para acesso agrave recursos nomeados na Web Ex Hypertext Trans-
fer Protocol ou HTTP
3 Hypertext para a faacutecil navegaccedilatildeo entre esses recursos Ex HTML
HTML que eacute usado para navegar entre os recursos da Web eacute tratado na
seccedilatildeo seguinte
21 HTML
HyperText Markup Language (HTML) eacute a liacutengua franca para publicaccedilatildeo
de conteuacutedo na World Wide Web Eacute um formato natildeo-proprietaacuterio que pode ser cri-
ado e processado por uma ampla variedade de ferramentas desde simples editores
de texto agrave ferramentas mais complexas de autoraccedilatildeo HTML usa tags como ltpgt
e ltpgt para estruturar o texto em tiacutetulos paraacutegrafos listas blocos imagens links
para outros documentos etc (CONSORTIUM 2010)
Um breve coacutedigo ou documento HTML eacute exibido abaixo
ltDOCTYPE html PUBLIC -W3CDTD XHTML 10 StrictEN
httpwwww3orgTRxhtml1DTDxhtml1-strictdtdgt
lthtml xmlns=httpwwww3org1999xhtml xmllang=en lang=engt
15
lthead gt
lttitle gtTitulo da Pagina HTML lttitle gt
lthead gt
ltbody gt
ltdiv id=conteudo class=blocogt
lth1gtTitulo do Texto lth1gt
ltpgtParagrafo contendo textoltpgt
ltpgtSegundo paragrafo com mais textoltpgt
ltdivgt
ltdiv class=blocogt
ltpgtltstrong gtTexto em negritoltstrong gtltpgt
ltpgtltemgtTexto em italicoltemgtltpgt
ltdivgt
ltbody gt
lthtml gt
A interpretaccedilatildeo desse coacutedigo pelo browser Google Chrome eacute exibido na
FIGURA 1
Figura 1 Interpretaccedilatildeo de coacutedigo HTML pelo browser Google Chrome
16
Apesar do HTML possuir uma grande quantidade de tags para formataccedilatildeo
de documentos existe uma limitaccedilatildeo histoacuterica em seu projeto as tags usadas satildeo
semi-estruturadas elas apenas descrevem como a informaccedilatildeo deve ser exibida mas
natildeo do que se trata os dados (WAN 2009) Dessa forma natildeo eacute uma linguagem
semacircntica que pode ter sua informaccedilatildeo trivialmente extraiacuteda e interpretada por
agentes computacionais
22 Document Object Model
Document Object Model abreviadamente chamado de DOM eacute uma in-
terface de programaccedilatildeo de aplicaccedilotildees ou API para documentos HTML vaacutelidos e
XML corretamente formatados Ela define a estrutura loacutegica dos documentos e a
maneira como seratildeo acessados e manipulados Atraveacutes da DOM programadores
podem construir documentos navegar pela sua estrutura adicionar modificar ou
remover elementos e conteuacutedo (ROBIE et al 2000)
Como eacute uma especificaccedilatildeo do World Wide Web Consortium ou W3C o
objetivo da Document Object Model eacute fornecer uma API padratildeo que possa ser
usada por uma ampla variedade de linguagens de programaccedilatildeo
No DOM os documentos tem uma estrutura loacutegica que eacute muito parecida
com uma aacutervore mais precisamente uma ldquoflorestardquo que eacute um conjunto de aacutervo-
res Cada documento conteacutem zero ou um noacute de declaraccedilatildeo de tipo de documento
(DOCTYPE) um noacute raiz e zero ou mais instruccedilotildees de processamento e comentaacute-
rios O elemento raiz funciona como o noacute raiz da aacutervore do documento (ROBIE et
al 2000)
Como exemplo considere o coacutedigo HTML apresentado na seccedilatildeo anterior
A aacutervore DOM deste documento eacute apresentada na FIGURA 2 Atraveacutes da manipu-
laccedilatildeo desta aacutervore eacute possiacutevel adicionar novos elementos atraveacutes da simples adiccedilatildeo
17
de novos noacutes agrave estrutura remover elementos atraveacutes da remoccedilatildeo de noacutes e editar
conteuacutedo textuais ou estruturais seja alterando textos ou modificando noacutes
Figura 2 Reproduccedilatildeo de uma aacutervore DOM para um documento HTML
Eacute facilmente perceptiacutevel que a API DOM eacute de suma importacircncia na anaacutelise
de conteuacutedos provenientes da World Wide Web
23 Seletores CSS
Cascading Style Sheets (CSS) eacute uma linguagem de estilo utilizada para
descrever a apresentaccedilatildeo de paacuteginas Web incluindo cores layouts fonte etc (CON-
SORTIUM 2011) Para que os elementos possam ser estilizados existem regras de
correspondecircncia para determinar quais regras se aplicam a elementos da aacutervore
DOM (BOS et al 2011)
18
Um simples exemplo de um documento CSS eacute apresentado a seguir con-
tendo alguns seletores
font -size 12px
h1
color red
p
color black
O CSS acima especifica atraveacutes do uso do seletor ldquordquo que qualquer ele-
mento do documento no qual eacute aplicado deve ter o texto no tamanho de 12 pixels
todos os elementos do tipo ldquoh1rdquo teratildeo o texto da cor vermelha e os elementos do
tipo ldquoprdquo teratildeo a cor preta especificados atraveacutes do uso de seletores homocircnimos a
esses elementos Na Quadro 1 eacute apresentada a sintaxe de alguns seletores CSS da
especificaccedilatildeo 21
Eacute importante ressaltar que seletores CSS natildeo satildeo usados unicamente para
definir estilos para paacuteginas Web Eles tambeacutem satildeo usados na navegaccedilatildeo pela aacutervore
DOM para que atributos e conteuacutedos dos noacutes possam ser recuperados modificados
ou excluiacutedos de forma mais dinacircmica Por exemplo na aacutervore DOM exibida na
FIGURA 2 o seletor ldquoconteudordquo retornaria o noacute ldquoltdivgtrdquo mais agrave esquerda
24 HTML Parsers
Um HTML Parser eacute uma ferramenta que cria uma aacutervore DOM a partir
da anaacutelise de um coacutedigo HTML (NYEIN 2011) O analisador eacute capaz de detectar
e corrigir vaacuterios erros de sintaxe HTML em documentos mal formatados (YANG
ZHANG TSAI 2008)
19
Padratildeo Significado Corresponde a qualquer ele-
mentoE Corresponde a qualquer ele-
mento E (isto eacute um elemento dotipo E)
E F Corresponde a qualquer ele-mento F que eacute descendente deum elemento E
E gt F Corresponde a qualquer ele-mento F que eacute filho do elementoE
Efirst-child Corresponde agrave primeira ocorrecircn-cia do elemento E
Ewarning Corresponde a qualquer ele-mento do tipo E que possui aclasse ldquowarningrdquo
Emyid Corresponde a qualquer ele-mento E que possui o ID ldquomyidrdquo
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011)
Normalmente eacute disponibilizada uma interface para que a aacutervore DOM
possa ser navegada Alguns parsers permitem que essa funccedilatildeo seja realizada atra-
veacutes de seletores CSS aleacutem de prover meacutetodos que permitem manipular e recuperar
informaccedilotildees de noacutes
Neste trabalho eacute utilizado o analisador de HTML phpQuery Eacute uma fer-
ramenta server-side orientado a seletores CSS3 e com meacutetodos para recuperaccedilatildeo
e manipulaccedilatildeo do Document Object Model (CUDNIK 2009)
20
3 Web Mining
Textos viacutedeos imagens e sons satildeo publicados e compartilhados a todo
momento e em todas as partes do mundo atraveacutes da World Wide Web O acompa-
nhamento absorccedilatildeo e compreensatildeo dessa imensuraacutevel quantidade de informaccedilatildeo
eacute uma tarefa impraticaacutevel ainda que em um niacutevel micro Por isso o conceito de
Web Mining foi criado por pesquisadores
Web Mining derivado da expressatildeo Data Mining pode ser amplamente
definido como a descoberta e anaacutelise de informaccedilatildeo uacutetil da World Wide Web (COO-
LEY MOBASHER SRIVASTAVA 1997)
Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e Srivastava(1997) Juacutenior (2007)
Uma taxonomia da Web Mining eacute apresentado na FIGURA 3 Nos paragraacute-
fos seguintes tem-se uma breve explicaccedilatildeo sobre cada subtoacutepico nela apresentada
sem se estender ateacute os noacutes do terceiro niacutevel
21
Web Structure Mining (Mineraccedilatildeo da Estrutura da Web) se refere ao pro-
cesso de descoberta de conhecimento atraveacutes da relaccedilatildeo entre os documentos con-
tidos na Web
Web Usage Mining (Mineraccedilatildeo do Uso da Web) analisa o padratildeo de com-
portamento de usuaacuterios na Web Como exemplo simples pode ser citado a desco-
berta de padrotildees no acesso de usuaacuterios a um determinado site em um Web server
Por fim Web Content Mining eacute tratado no subcapiacutetulo seguinte
31 Web Content Mining
Web Content Mining (Mineraccedilatildeo do Conteuacutedo da Web) eacute o processo de
extraccedilatildeo de informaccedilatildeo do conteuacutedo de documentos e seus metadados (palavras-
chave informaccedilotildees sobre produtos imagens etc) Apesar deste enfoque abranger
principalmente documentos HTML ele se estende a formatos natildeo-textuais como
imagens e viacutedeos (SANTOS 2009) Segundo Cooley Mobasher e Srivastava (1997)
Web Content Mining pode ser dividido em trecircs abordagens explicadas a seguir
A primeira delas Agent Based Approach em portuguecircs Abordagem Base-
ada em Agentes pode ser dividida nas seguintes categorias
bull Intelligent Search Agents (Agentes Inteligentes de Busca) sistemas que bus-
cam por dados relevantes organizando e interpretando a informaccedilatildeo desco-
berta FAQ-Finder (HAMMOND et al 1995) e BargainFinder (WAN PENG
2010) satildeo dois exemplos claacutessicos dessa categoria
bull Information FilteringCategorization (FiltragemCategorizaccedilatildeo de Informa-
ccedilatildeo) agentes que usam uma variedade de teacutecnicas de recuperaccedilatildeo de infor-
maccedilatildeo e caracteriacutesticas de documentos da Web para automaticamente ob-
ter filtrar e organizar a informaccedilatildeo BO (Bookmark Organizer) (MAAREK
SHAUL 1996) eacute um exemplo desse tipo de aplicaccedilatildeo tendo em vista que
22
ele organiza coleccedilotildees de documentos da Web baseados na sua informaccedilatildeo
conceitual
bull Personalized Web Agents (Agentes Web Personalizados) satildeo agentes que
aprendem as preferecircncias do usuaacuterio e descobrem informaccedilotildees da Web ba-
seada nessas preferecircncas (COOLEY MOBASHER SRIVASTAVA 1997)
A segunda abordagem Database Approach (Abordagem de Database)
foca em teacutecnicas para organizaccedilatildeo da informaccedilatildeo semi-estruturada da Web em
dados mais estruturados usando mecanismos padrotildees de consulta agrave databases e
teacutecnicas de data mining para anaacutelise Pode ser dividido em duas categorias
bull Multilevel Databases (Databases Multiniacuteveis) a principal ideia dessa abor-
dagem eacute que o niacutevel mais baixo da database contenha informaccedilatildeo semi-
estruturada armazenada em vaacuterios repositoacuterios Web Nos niacuteveis mais altos
meta dados ou generalizaccedilotildees satildeo extraiacutedos dos niacuteveis mais baixos e orga-
nizados em coleccedilotildees estruturadas como databases relacionais orientadas a
objetos (COOLEY MOBASHER SRIVASTAVA 1997)
bull Web Query Systems (Sistemas de Consultas Web) sistemas que utilizam
padrotildees de consultas a databases ou a informaccedilotildees estruturais sobre docu-
mentos Web e ateacute processadores de linguagens naturais para processar as
consultas que satildeo realizadas nas buscas na Internet (COOLEY MOBASHER
SRIVASTAVA 1997)
Este trabalho estaacute situado na aacuterea de Web Content Mining especificamente
na Abordagem Baseada em Agentes na categoria de Agentes Inteligentes de Busca
visto que o conteuacutedo presente no HTML de paacuteginas de e-commerce seratildeo anali-
sados por um robocirc de busca inteligente que coletaraacute e organizaraacute a informaccedilatildeo
relevante
23
32 Wrapper
A World Wide Web natildeo eacute estruturada de forma a apresentar informaccedilotildees
que possam ser lidas por maacutequinas A maioria da imensuraacutevel quantidade de dados
presente na Web estaacute apresentada em estruturas fracamente semacircnticas que natildeo po-
dem ser compreendidas por agentes (DOORENBOS ETZIONI WELD 1997) Faz-se
necessaacuterio entatildeo uma regra de traduccedilatildeo para cada fonte de dados A esse ldquotradutorrdquo
eacute dado o nome de wrapper (KUSHMERICK 1997 COWIE LEHNERT 1996)
Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers Fonte Yanget al (2000)
Formalmente um wrapper eacute um programa agente ou conjunto de regras
que entende a informaccedilatildeo de uma fonte e a traduz em uma forma regular e compre-
ensiacutevel que pode ser usada por outros agentes Um wrapper eacute especializado apenas
em uma uacutenica fonte de informaccedilotildees (YANG et al 2000) A FIGURA 4 mostra um
sistema de integraccedilatildeo de informaccedilotildees usando vaacuterios wrappers cada um para uma
fonte especiacutefica de informaccedilatildeo
24
Segundo Firat (2003) wrappers podem ser divididos em trecircs tipos baseado
no seu niacutevel de automaccedilatildeo
bull Manual codificar manualmente um wrapper normalmente eacute uma tarefa
tediosa e em alguns casos impraticaacutevel O nuacutemero de fontes de dados pode
ser muito grande ou crescer rapidamente e a estrutura e o conteuacutedo da fonte
pode frequentemente mudar Todos esses fatores tornam essa tarefa manual
altamente custosa e demorada (TATBUL et al 2001)
bull Semi-automaacutetico (interativo) em alguns casos as regras de um wrap-
per que lida com os detalhes especiacuteficos de uma fonte de dados eacute relati-
vamente pequena A outra parte eacute igual em todos os wrappers ou pode ser
gerada semi-automaticamente baseada em uma descriccedilatildeo declarativa dada
pelo usuaacuterio (TATBUL et al 2001)
bull Automaacutetico a geraccedilatildeo automaacutetica de um wrapper significa que natildeo haacute
intervenccedilatildeo humana nesse processo Ferramentas de geraccedilatildeo automaacutetica
podem ser especiacuteficas pra um site ou geneacutericas normalmente necessitam de
um estaacutegio de treinamento e satildeo baseados em algoritmos de aprendizado
supervisionado (TATBUL et al 2001)
Neste trabalho o wrapper gerado seraacute um conjunto de seletores CSS que
especificam quais dados de paacuteginas Web devem ser extraiacutedos gerando informaccedilotildees
relevantes a partir de documentos semi-estruturados
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
LEANDRO SILVA ALONSO
AGENTE INTELIGENTE DE SHOPPING COMPARISON ATRAVEacuteS DE
DETECCcedilAtildeO DE PADROtildeES
Monografia apresentada ao Colegiado doCurso de Ciecircncia da Computaccedilatildeo para aobtenccedilatildeo do tiacutetulo de Bacharel em Ciecircn-cia da Computaccedilatildeo
Orientador
Prof Dr Tales Heimfarth
Co-Orientador
Prof MSc Tiago Amador Coelho
LAVRAS - MG
2012
Dedicado a todos que fizeram parte dessa caminhada e especialmente a minha
famiacutelia e amigos
AGRADECIMENTOS
Agradeccedilo inicialmente aos meus pais Faustino Bisso Alonso Neto e
Maria Perpeacutetua da Silva Alonso por todo o apoio forccedila incentivo e
carinho E agrave minha irmatilde Letiacutecia Silva Alonso que mesmo distante
sempre se fez presente Sem vocecircs eu natildeo teria chegado ateacute aqui
Um imenso obrigado ao professor Ahmed com quem trabalhei todos
esses anos e aprendi muito Natildeo poderia deixar de mencionar meu
orientador Tiago que apoiou e contribuiu muito para este trabalho
Vocecircs foram os melhores que eu poderia encontrar
Agrave minha turma de Computaccedilatildeo (20081) fica meu muito obrigado e
um ateacute logo por todos os momentos vividos
Aos meus companheiros de trabalho do NTE e do LICESA minha
imensa gratidatildeo por todo aprendizado e grandes momentos vividos
Jamais seratildeo esquecidos
Por fim agradeccedilo aos meus amigos que de uma forma ou de outra
fizeram parte dessa caminhada Muito obrigado
RESUMO
Os serviccedilos de comparaccedilatildeo de preccedilos chamados de Shopping Compari-son tecircm impactado o setor de comeacutercio online e oferecido informaccedilotildees de valorpara que o consumidor efetue decisotildees de compra
No entanto extrair os dados de muacuteltiplas lojas online mostra-se uma ta-refa natildeo trivial tendo em vista que documentos HTML satildeo semi-estruturados epossuem um baixo valor semacircntico
Neste trabalho propotildee-se um agente de Shopping Comparison ou Shopbotque atraveacutes da detecccedilatildeo de padrotildees em documentos HTML consegue determinaraonde estatildeo os produtos e seus atributos gerando um modelo reaproveitaacutevel capazde traduzir os dados semi-estruturados em informaccedilotildees
Os resultados indicam que o protoacutetipo desenvolvido eacute completamente viaacute-vel e mostrou-se funcional na maior parte das lojas analisadas
Palavras-chave Shopping Comparison Shopbot Web Content Mining
ABSTRACT
The Shopping Comparison services has impacted the online commerceand offered valuable information for the consumer to make purchasing decisions
However extract the data from multiple vendors is a nontrivial task consi-dering that HTML documents are semi-structured and have a low semantic value
In this work is proposed a Shopping Comparison agent or Shopbot thatby detecting patterns in HTML documents can determine where are the productsand his attributes generating a reusable model able to translate the semi-structureddata into valuable information
The results show that the prototype developed is entirely viable and provedto be functional in most vendors analyzed
Keywords Shopping Comparison Shopbot Web Content Mining
LISTA DE FIGURAS
Figura 1 Interpretaccedilatildeo de coacutedigo HTML pelo browser Google Chrome 15Figura 2 Reproduccedilatildeo de uma aacutervore DOM para um documento HTML 17Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e
Srivastava (1997) Juacutenior (2007) 20Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers
Fonte Yang et al (2000) 23Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e
Peng (2010) 25Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte
Yang et al (2000) 27Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em
bilhotildees) Fonte ebit (2011) 29Figura 8 Arquitetura do shopbot proposto 36Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fonte
httpvinaytechwordpresscom20081124ajax-and-dom 40Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em
forma de lista 41Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em
forma de grade 42Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo
do algoritmo poacutes-ordem 43Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos
em um mesmo anuacutencio 55Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios
diferentes 57Figura 15 Interface inicial do protoacutetipo 59Figura 16 Interface do protoacutetipo exibindo resultados para a busca por
ldquogalaxy noterdquo 60
LISTA DE QUADROS
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011) 19Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do
protoacutetipo 32Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do
protoacutetipo 33Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como
entrada para o shopbot 38Quadro 5 Exemplos de termos de busca natildeo adequados 39Quadro 6 Exemplos de termos de busca adequados 39Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore
exemplificada na FIGURA 12 43Quadro 8 Resultado da remoccedilatildeo de ruiacutedos 45Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes 48Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade 49Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de
dados inicialmente estabelecido 62Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10
lojas 63Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados
inicialmente estabelecido 64Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas 65
SUMAacuteRIO
1 Introduccedilatildeo 1111 Contextualizaccedilatildeo e Motivaccedilatildeo 1112 Objetivos 1313 Organizaccedilatildeo do Trabalho 132 Linguagem HTML 1421 HTML 1422 Document Object Model 1623 Seletores CSS 1724 HTML Parsers 183 Web Mining 2031 Web Content Mining 2132 Wrapper 234 Shopping Comparison 2541 Serviccedilos de Shopping Comparison 2542 Shopbot 2643 Impactos no Comeacutercio Eletrocircnico 295 Metodologia 3251 Meacutetodos 32511 Entendimento do Problema 3352 Material 34521 PHP 34522 phpQuery 34523 Ambiente Computacional 356 Arquitetura do Shopbot proposto 3661 Determinaccedilatildeo dos Termos de Busca adequados 37611 Detecccedilatildeo de Padrotildees 37612 Submissatildeo da URL e Termos de Busca 37613 Anaacutelise do HTML e Conversatildeo em Document Object Model 4062 Eliminaccedilatildeo de Ruiacutedos 4163 Ordenaccedilatildeo dos Resultados 4564 Geraccedilatildeo do Wrapper 48641 Formato do Wrapper 50642 Definindo Seletores CSS para os Anuacutencios 51643 Extraccedilatildeo do Tiacutetulo do Produto 51644 Extraccedilatildeo do Link do Produto 52645 Extraccedilatildeo do Parcelamento do Produto 53646 Extraccedilatildeo do Preccedilo do Produto 54
647 Extraccedilatildeo da Imagem do Produto 5665 Implementaccedilatildeo do Protoacutetipo 58651 Interface do Protoacutetipo 587 Resultados e Discussatildeo 6171 Resultados da Detecccedilatildeo de Padrotildees 6172 Resultados da Geraccedilatildeo de Wrapper 638 Conclusotildees e Trabalhos Futuros 66REFEREcircNCIAS 68
11
1 Introduccedilatildeo
11 Contextualizaccedilatildeo e Motivaccedilatildeo
A Era Digital tem inserido novas e importantes regras que regem a so-
ciedade moderna e o atual panorama socioeconocircmico Globalizaccedilatildeo competi-
ccedilatildeo informaccedilatildeo em grandes quantidades mudanccedilas constantes em curto espaccedilo
de tempo variedades de opccedilotildees e vaacuterios outros termos e efeitos dessa Era tecircm
surgido ao longo do tempo
Com a evoluccedilatildeo das tecnologias e o advento da Internet o comeacutercio se
modificou atraveacutes do surgimento do comeacutercio online tambeacutem chamado de e-
commerce ou comeacutercio virtual O consumidor antes limitado por barreiras ge-
ograacuteficas passou a ter acesso a um maior conjunto de lojas produtos e serviccedilos
atraveacutes da web
Segundo dados da empresa e-bit o comeacutercio eletrocircnico brasileiro alcan-
ccedilou um faturamento de R$ 187 bilhotildees em 2011 Um aumento de 26 em relaccedilatildeo
ao ano anterior quando o faturamento foi de R$ 148 bilhotildees O nuacutemero de consu-
midores que compraram pela web ao menos uma vez eacute de 32 milhotildees e apenas no
ano de 2011 foram efetuados 537 milhotildees de pedidos atraveacutes de 5000 lojas online
(EBIT 2011)
Atraveacutes das milhares de lojas o consumidor passou a ter mais opccedilotildees in-
formaccedilotildees e ofertas do que nunca Ele pode optar por fazer suas compras em gran-
des redes lojas virtuais especializadas cataacutelogos virtuais dentre outros meios E eacute
bombardeado com mensagens por diversos canais televisatildeo Internet raacutedio redes
sociais miacutedia impressa etc (MCKENNA 1999)
No entanto devido agrave imensuraacutevel quantidade de anuacutencios disponiacuteveis a
tarefa de escolher o produto desejado pelo melhor preccedilo torna-se demasiadamente
12
custosa Como um exemplo simples suponha-se um consumidor que deseja adqui-
rir uma TV LCD ele deve selecionar uma quantidade finita de lojas que conhece
buscar o produto desejado em cada loja e por fim cruzar os dados obtidos a fim
de encontrar o melhor custo-benefiacutecio Embora tal tarefa possa parecer simploacute-
ria ela se torna cada vez mais complexa agrave medida que mais lojas satildeo incluiacutedas na
pesquisa
Serviccedilos de Shopping Comparison se propotildeem a resolver esse problema
atraveacutes de um serviccedilo online baseado na web os consumidores podem encontrar
produtos preccedilos e outras informaccedilotildees de muacuteltiplas lojas online ao inveacutes de visitar
cada uma separadamente Os preccedilos e produtos satildeo apresentados na mesma inter-
face e o consumidor pode tomar a melhor decisatildeo sendo entatildeo redirecionado para
o fornecedor do produto para completar a transaccedilatildeo (WAN 2009)
Para que tais dados sejam apresentados eacute necessaacuterio que um agente de pes-
quisa de preccedilos chamado de Shopbot automaticamente pesquise uma coleccedilatildeo de
lojas online para coletar e comparar dados de um produto especificado (ZHANG
JING 2011) Entretanto natildeo existe uma padronizaccedilatildeo para a exibiccedilatildeo dos dados
dos produtos cada loja possui seu proacuteprio layout organizaccedilatildeo estrutural tecnolo-
gias etc Portanto desenvolver um bom agente de comparaccedilatildeo (shopbot) capaz
de coletar dados de muacuteltiplas fontes se torna uma tarefa natildeo trivial
A tarefa de descobrimento e anaacutelise de informaccedilotildees uacuteteis da World Wide
Web atraveacutes da busca automaacutetica de informaccedilatildeo de recursos disponiacuteveis online eacute
a definiccedilatildeo de Web Mining (COOLEY MOBASHER SRIVASTAVA 1997) Sendo este
trabalho portanto pertencente a essa linha de pesquisa
13
12 Objetivos
Este trabalho elabora um conjunto de regras e procedimentos para a de-
tecccedilatildeo de padrotildees identificaccedilatildeo de atributos extraccedilatildeo de dados em lojas de e-
commerce e geraccedilatildeo de um modelo geneacuterico e reaproveitaacutevel para cada fonte de
dados
Objetiva-se mensurar a eficiecircncia do modelo proposto em extrair dados
de produtos atraveacutes da implementaccedilatildeo de um protoacutetipo de shopbot que aplica tais
regras e procedimentos em uma aplicaccedilatildeo de Shopping Comparison
13 Organizaccedilatildeo do Trabalho
Este trabalho estaacute organizado da seguinte maneira
bull Os capiacutetulos 2 3 e 4 constituem o Referencial Teoacuterico deste trabalho No
capiacutetulo 2 tem-se a apresentaccedilatildeo de conceitos de HTML No capiacutetulo 3 eacute
realizada uma apresentaccedilatildeo sobre conceitos de Web Mining focando-se em
Web Content Mining Por fim no capiacutetulo 4 eacute dada uma definiccedilatildeo de Shop-
ping Comparison e Shopbot aleacutem dos seus impactos no comeacutercio online
bull O capiacutetulo 5 descreve a Metodologia utilizada no trabalho definindo os pro-
cedimentos metodoloacutegicos e as tecnologias utilizadas
bull No capiacutetulo 6 satildeo apresentados com detalhes as regras e procedimentos utili-
zados na construccedilatildeo do protoacutetipo de shopbot proposto neste trabalho desde
a elaboraccedilatildeo do algoritmo ateacute a interface do serviccedilo de Shopping Compari-
son
bull O capiacutetulo 7 conteacutem os resultados obtidos e algumas discussotildees a respeito
do que foi atingido
14
2 Linguagem HTML
A World Wide Web eacute uma imensa rede de informaccedilotildees Segundo o World
Wide Web Consortium a principal organizaccedilatildeo de padrotildees para a Internet a Web se
baseia em trecircs mecanismos que tornam esses recursos disponiacuteveis para o puacuteblico
mais amplo possiacutevel (CONSORTIUM 1999)
1 Um esquema de nomenclatura uniforme para a localizaccedilatildeo de recursos pre-
sentes na Web Ex Universal Resource Identifier ou URI
2 Protocolos para acesso agrave recursos nomeados na Web Ex Hypertext Trans-
fer Protocol ou HTTP
3 Hypertext para a faacutecil navegaccedilatildeo entre esses recursos Ex HTML
HTML que eacute usado para navegar entre os recursos da Web eacute tratado na
seccedilatildeo seguinte
21 HTML
HyperText Markup Language (HTML) eacute a liacutengua franca para publicaccedilatildeo
de conteuacutedo na World Wide Web Eacute um formato natildeo-proprietaacuterio que pode ser cri-
ado e processado por uma ampla variedade de ferramentas desde simples editores
de texto agrave ferramentas mais complexas de autoraccedilatildeo HTML usa tags como ltpgt
e ltpgt para estruturar o texto em tiacutetulos paraacutegrafos listas blocos imagens links
para outros documentos etc (CONSORTIUM 2010)
Um breve coacutedigo ou documento HTML eacute exibido abaixo
ltDOCTYPE html PUBLIC -W3CDTD XHTML 10 StrictEN
httpwwww3orgTRxhtml1DTDxhtml1-strictdtdgt
lthtml xmlns=httpwwww3org1999xhtml xmllang=en lang=engt
15
lthead gt
lttitle gtTitulo da Pagina HTML lttitle gt
lthead gt
ltbody gt
ltdiv id=conteudo class=blocogt
lth1gtTitulo do Texto lth1gt
ltpgtParagrafo contendo textoltpgt
ltpgtSegundo paragrafo com mais textoltpgt
ltdivgt
ltdiv class=blocogt
ltpgtltstrong gtTexto em negritoltstrong gtltpgt
ltpgtltemgtTexto em italicoltemgtltpgt
ltdivgt
ltbody gt
lthtml gt
A interpretaccedilatildeo desse coacutedigo pelo browser Google Chrome eacute exibido na
FIGURA 1
Figura 1 Interpretaccedilatildeo de coacutedigo HTML pelo browser Google Chrome
16
Apesar do HTML possuir uma grande quantidade de tags para formataccedilatildeo
de documentos existe uma limitaccedilatildeo histoacuterica em seu projeto as tags usadas satildeo
semi-estruturadas elas apenas descrevem como a informaccedilatildeo deve ser exibida mas
natildeo do que se trata os dados (WAN 2009) Dessa forma natildeo eacute uma linguagem
semacircntica que pode ter sua informaccedilatildeo trivialmente extraiacuteda e interpretada por
agentes computacionais
22 Document Object Model
Document Object Model abreviadamente chamado de DOM eacute uma in-
terface de programaccedilatildeo de aplicaccedilotildees ou API para documentos HTML vaacutelidos e
XML corretamente formatados Ela define a estrutura loacutegica dos documentos e a
maneira como seratildeo acessados e manipulados Atraveacutes da DOM programadores
podem construir documentos navegar pela sua estrutura adicionar modificar ou
remover elementos e conteuacutedo (ROBIE et al 2000)
Como eacute uma especificaccedilatildeo do World Wide Web Consortium ou W3C o
objetivo da Document Object Model eacute fornecer uma API padratildeo que possa ser
usada por uma ampla variedade de linguagens de programaccedilatildeo
No DOM os documentos tem uma estrutura loacutegica que eacute muito parecida
com uma aacutervore mais precisamente uma ldquoflorestardquo que eacute um conjunto de aacutervo-
res Cada documento conteacutem zero ou um noacute de declaraccedilatildeo de tipo de documento
(DOCTYPE) um noacute raiz e zero ou mais instruccedilotildees de processamento e comentaacute-
rios O elemento raiz funciona como o noacute raiz da aacutervore do documento (ROBIE et
al 2000)
Como exemplo considere o coacutedigo HTML apresentado na seccedilatildeo anterior
A aacutervore DOM deste documento eacute apresentada na FIGURA 2 Atraveacutes da manipu-
laccedilatildeo desta aacutervore eacute possiacutevel adicionar novos elementos atraveacutes da simples adiccedilatildeo
17
de novos noacutes agrave estrutura remover elementos atraveacutes da remoccedilatildeo de noacutes e editar
conteuacutedo textuais ou estruturais seja alterando textos ou modificando noacutes
Figura 2 Reproduccedilatildeo de uma aacutervore DOM para um documento HTML
Eacute facilmente perceptiacutevel que a API DOM eacute de suma importacircncia na anaacutelise
de conteuacutedos provenientes da World Wide Web
23 Seletores CSS
Cascading Style Sheets (CSS) eacute uma linguagem de estilo utilizada para
descrever a apresentaccedilatildeo de paacuteginas Web incluindo cores layouts fonte etc (CON-
SORTIUM 2011) Para que os elementos possam ser estilizados existem regras de
correspondecircncia para determinar quais regras se aplicam a elementos da aacutervore
DOM (BOS et al 2011)
18
Um simples exemplo de um documento CSS eacute apresentado a seguir con-
tendo alguns seletores
font -size 12px
h1
color red
p
color black
O CSS acima especifica atraveacutes do uso do seletor ldquordquo que qualquer ele-
mento do documento no qual eacute aplicado deve ter o texto no tamanho de 12 pixels
todos os elementos do tipo ldquoh1rdquo teratildeo o texto da cor vermelha e os elementos do
tipo ldquoprdquo teratildeo a cor preta especificados atraveacutes do uso de seletores homocircnimos a
esses elementos Na Quadro 1 eacute apresentada a sintaxe de alguns seletores CSS da
especificaccedilatildeo 21
Eacute importante ressaltar que seletores CSS natildeo satildeo usados unicamente para
definir estilos para paacuteginas Web Eles tambeacutem satildeo usados na navegaccedilatildeo pela aacutervore
DOM para que atributos e conteuacutedos dos noacutes possam ser recuperados modificados
ou excluiacutedos de forma mais dinacircmica Por exemplo na aacutervore DOM exibida na
FIGURA 2 o seletor ldquoconteudordquo retornaria o noacute ldquoltdivgtrdquo mais agrave esquerda
24 HTML Parsers
Um HTML Parser eacute uma ferramenta que cria uma aacutervore DOM a partir
da anaacutelise de um coacutedigo HTML (NYEIN 2011) O analisador eacute capaz de detectar
e corrigir vaacuterios erros de sintaxe HTML em documentos mal formatados (YANG
ZHANG TSAI 2008)
19
Padratildeo Significado Corresponde a qualquer ele-
mentoE Corresponde a qualquer ele-
mento E (isto eacute um elemento dotipo E)
E F Corresponde a qualquer ele-mento F que eacute descendente deum elemento E
E gt F Corresponde a qualquer ele-mento F que eacute filho do elementoE
Efirst-child Corresponde agrave primeira ocorrecircn-cia do elemento E
Ewarning Corresponde a qualquer ele-mento do tipo E que possui aclasse ldquowarningrdquo
Emyid Corresponde a qualquer ele-mento E que possui o ID ldquomyidrdquo
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011)
Normalmente eacute disponibilizada uma interface para que a aacutervore DOM
possa ser navegada Alguns parsers permitem que essa funccedilatildeo seja realizada atra-
veacutes de seletores CSS aleacutem de prover meacutetodos que permitem manipular e recuperar
informaccedilotildees de noacutes
Neste trabalho eacute utilizado o analisador de HTML phpQuery Eacute uma fer-
ramenta server-side orientado a seletores CSS3 e com meacutetodos para recuperaccedilatildeo
e manipulaccedilatildeo do Document Object Model (CUDNIK 2009)
20
3 Web Mining
Textos viacutedeos imagens e sons satildeo publicados e compartilhados a todo
momento e em todas as partes do mundo atraveacutes da World Wide Web O acompa-
nhamento absorccedilatildeo e compreensatildeo dessa imensuraacutevel quantidade de informaccedilatildeo
eacute uma tarefa impraticaacutevel ainda que em um niacutevel micro Por isso o conceito de
Web Mining foi criado por pesquisadores
Web Mining derivado da expressatildeo Data Mining pode ser amplamente
definido como a descoberta e anaacutelise de informaccedilatildeo uacutetil da World Wide Web (COO-
LEY MOBASHER SRIVASTAVA 1997)
Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e Srivastava(1997) Juacutenior (2007)
Uma taxonomia da Web Mining eacute apresentado na FIGURA 3 Nos paragraacute-
fos seguintes tem-se uma breve explicaccedilatildeo sobre cada subtoacutepico nela apresentada
sem se estender ateacute os noacutes do terceiro niacutevel
21
Web Structure Mining (Mineraccedilatildeo da Estrutura da Web) se refere ao pro-
cesso de descoberta de conhecimento atraveacutes da relaccedilatildeo entre os documentos con-
tidos na Web
Web Usage Mining (Mineraccedilatildeo do Uso da Web) analisa o padratildeo de com-
portamento de usuaacuterios na Web Como exemplo simples pode ser citado a desco-
berta de padrotildees no acesso de usuaacuterios a um determinado site em um Web server
Por fim Web Content Mining eacute tratado no subcapiacutetulo seguinte
31 Web Content Mining
Web Content Mining (Mineraccedilatildeo do Conteuacutedo da Web) eacute o processo de
extraccedilatildeo de informaccedilatildeo do conteuacutedo de documentos e seus metadados (palavras-
chave informaccedilotildees sobre produtos imagens etc) Apesar deste enfoque abranger
principalmente documentos HTML ele se estende a formatos natildeo-textuais como
imagens e viacutedeos (SANTOS 2009) Segundo Cooley Mobasher e Srivastava (1997)
Web Content Mining pode ser dividido em trecircs abordagens explicadas a seguir
A primeira delas Agent Based Approach em portuguecircs Abordagem Base-
ada em Agentes pode ser dividida nas seguintes categorias
bull Intelligent Search Agents (Agentes Inteligentes de Busca) sistemas que bus-
cam por dados relevantes organizando e interpretando a informaccedilatildeo desco-
berta FAQ-Finder (HAMMOND et al 1995) e BargainFinder (WAN PENG
2010) satildeo dois exemplos claacutessicos dessa categoria
bull Information FilteringCategorization (FiltragemCategorizaccedilatildeo de Informa-
ccedilatildeo) agentes que usam uma variedade de teacutecnicas de recuperaccedilatildeo de infor-
maccedilatildeo e caracteriacutesticas de documentos da Web para automaticamente ob-
ter filtrar e organizar a informaccedilatildeo BO (Bookmark Organizer) (MAAREK
SHAUL 1996) eacute um exemplo desse tipo de aplicaccedilatildeo tendo em vista que
22
ele organiza coleccedilotildees de documentos da Web baseados na sua informaccedilatildeo
conceitual
bull Personalized Web Agents (Agentes Web Personalizados) satildeo agentes que
aprendem as preferecircncias do usuaacuterio e descobrem informaccedilotildees da Web ba-
seada nessas preferecircncas (COOLEY MOBASHER SRIVASTAVA 1997)
A segunda abordagem Database Approach (Abordagem de Database)
foca em teacutecnicas para organizaccedilatildeo da informaccedilatildeo semi-estruturada da Web em
dados mais estruturados usando mecanismos padrotildees de consulta agrave databases e
teacutecnicas de data mining para anaacutelise Pode ser dividido em duas categorias
bull Multilevel Databases (Databases Multiniacuteveis) a principal ideia dessa abor-
dagem eacute que o niacutevel mais baixo da database contenha informaccedilatildeo semi-
estruturada armazenada em vaacuterios repositoacuterios Web Nos niacuteveis mais altos
meta dados ou generalizaccedilotildees satildeo extraiacutedos dos niacuteveis mais baixos e orga-
nizados em coleccedilotildees estruturadas como databases relacionais orientadas a
objetos (COOLEY MOBASHER SRIVASTAVA 1997)
bull Web Query Systems (Sistemas de Consultas Web) sistemas que utilizam
padrotildees de consultas a databases ou a informaccedilotildees estruturais sobre docu-
mentos Web e ateacute processadores de linguagens naturais para processar as
consultas que satildeo realizadas nas buscas na Internet (COOLEY MOBASHER
SRIVASTAVA 1997)
Este trabalho estaacute situado na aacuterea de Web Content Mining especificamente
na Abordagem Baseada em Agentes na categoria de Agentes Inteligentes de Busca
visto que o conteuacutedo presente no HTML de paacuteginas de e-commerce seratildeo anali-
sados por um robocirc de busca inteligente que coletaraacute e organizaraacute a informaccedilatildeo
relevante
23
32 Wrapper
A World Wide Web natildeo eacute estruturada de forma a apresentar informaccedilotildees
que possam ser lidas por maacutequinas A maioria da imensuraacutevel quantidade de dados
presente na Web estaacute apresentada em estruturas fracamente semacircnticas que natildeo po-
dem ser compreendidas por agentes (DOORENBOS ETZIONI WELD 1997) Faz-se
necessaacuterio entatildeo uma regra de traduccedilatildeo para cada fonte de dados A esse ldquotradutorrdquo
eacute dado o nome de wrapper (KUSHMERICK 1997 COWIE LEHNERT 1996)
Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers Fonte Yanget al (2000)
Formalmente um wrapper eacute um programa agente ou conjunto de regras
que entende a informaccedilatildeo de uma fonte e a traduz em uma forma regular e compre-
ensiacutevel que pode ser usada por outros agentes Um wrapper eacute especializado apenas
em uma uacutenica fonte de informaccedilotildees (YANG et al 2000) A FIGURA 4 mostra um
sistema de integraccedilatildeo de informaccedilotildees usando vaacuterios wrappers cada um para uma
fonte especiacutefica de informaccedilatildeo
24
Segundo Firat (2003) wrappers podem ser divididos em trecircs tipos baseado
no seu niacutevel de automaccedilatildeo
bull Manual codificar manualmente um wrapper normalmente eacute uma tarefa
tediosa e em alguns casos impraticaacutevel O nuacutemero de fontes de dados pode
ser muito grande ou crescer rapidamente e a estrutura e o conteuacutedo da fonte
pode frequentemente mudar Todos esses fatores tornam essa tarefa manual
altamente custosa e demorada (TATBUL et al 2001)
bull Semi-automaacutetico (interativo) em alguns casos as regras de um wrap-
per que lida com os detalhes especiacuteficos de uma fonte de dados eacute relati-
vamente pequena A outra parte eacute igual em todos os wrappers ou pode ser
gerada semi-automaticamente baseada em uma descriccedilatildeo declarativa dada
pelo usuaacuterio (TATBUL et al 2001)
bull Automaacutetico a geraccedilatildeo automaacutetica de um wrapper significa que natildeo haacute
intervenccedilatildeo humana nesse processo Ferramentas de geraccedilatildeo automaacutetica
podem ser especiacuteficas pra um site ou geneacutericas normalmente necessitam de
um estaacutegio de treinamento e satildeo baseados em algoritmos de aprendizado
supervisionado (TATBUL et al 2001)
Neste trabalho o wrapper gerado seraacute um conjunto de seletores CSS que
especificam quais dados de paacuteginas Web devem ser extraiacutedos gerando informaccedilotildees
relevantes a partir de documentos semi-estruturados
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
Dedicado a todos que fizeram parte dessa caminhada e especialmente a minha
famiacutelia e amigos
AGRADECIMENTOS
Agradeccedilo inicialmente aos meus pais Faustino Bisso Alonso Neto e
Maria Perpeacutetua da Silva Alonso por todo o apoio forccedila incentivo e
carinho E agrave minha irmatilde Letiacutecia Silva Alonso que mesmo distante
sempre se fez presente Sem vocecircs eu natildeo teria chegado ateacute aqui
Um imenso obrigado ao professor Ahmed com quem trabalhei todos
esses anos e aprendi muito Natildeo poderia deixar de mencionar meu
orientador Tiago que apoiou e contribuiu muito para este trabalho
Vocecircs foram os melhores que eu poderia encontrar
Agrave minha turma de Computaccedilatildeo (20081) fica meu muito obrigado e
um ateacute logo por todos os momentos vividos
Aos meus companheiros de trabalho do NTE e do LICESA minha
imensa gratidatildeo por todo aprendizado e grandes momentos vividos
Jamais seratildeo esquecidos
Por fim agradeccedilo aos meus amigos que de uma forma ou de outra
fizeram parte dessa caminhada Muito obrigado
RESUMO
Os serviccedilos de comparaccedilatildeo de preccedilos chamados de Shopping Compari-son tecircm impactado o setor de comeacutercio online e oferecido informaccedilotildees de valorpara que o consumidor efetue decisotildees de compra
No entanto extrair os dados de muacuteltiplas lojas online mostra-se uma ta-refa natildeo trivial tendo em vista que documentos HTML satildeo semi-estruturados epossuem um baixo valor semacircntico
Neste trabalho propotildee-se um agente de Shopping Comparison ou Shopbotque atraveacutes da detecccedilatildeo de padrotildees em documentos HTML consegue determinaraonde estatildeo os produtos e seus atributos gerando um modelo reaproveitaacutevel capazde traduzir os dados semi-estruturados em informaccedilotildees
Os resultados indicam que o protoacutetipo desenvolvido eacute completamente viaacute-vel e mostrou-se funcional na maior parte das lojas analisadas
Palavras-chave Shopping Comparison Shopbot Web Content Mining
ABSTRACT
The Shopping Comparison services has impacted the online commerceand offered valuable information for the consumer to make purchasing decisions
However extract the data from multiple vendors is a nontrivial task consi-dering that HTML documents are semi-structured and have a low semantic value
In this work is proposed a Shopping Comparison agent or Shopbot thatby detecting patterns in HTML documents can determine where are the productsand his attributes generating a reusable model able to translate the semi-structureddata into valuable information
The results show that the prototype developed is entirely viable and provedto be functional in most vendors analyzed
Keywords Shopping Comparison Shopbot Web Content Mining
LISTA DE FIGURAS
Figura 1 Interpretaccedilatildeo de coacutedigo HTML pelo browser Google Chrome 15Figura 2 Reproduccedilatildeo de uma aacutervore DOM para um documento HTML 17Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e
Srivastava (1997) Juacutenior (2007) 20Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers
Fonte Yang et al (2000) 23Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e
Peng (2010) 25Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte
Yang et al (2000) 27Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em
bilhotildees) Fonte ebit (2011) 29Figura 8 Arquitetura do shopbot proposto 36Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fonte
httpvinaytechwordpresscom20081124ajax-and-dom 40Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em
forma de lista 41Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em
forma de grade 42Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo
do algoritmo poacutes-ordem 43Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos
em um mesmo anuacutencio 55Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios
diferentes 57Figura 15 Interface inicial do protoacutetipo 59Figura 16 Interface do protoacutetipo exibindo resultados para a busca por
ldquogalaxy noterdquo 60
LISTA DE QUADROS
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011) 19Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do
protoacutetipo 32Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do
protoacutetipo 33Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como
entrada para o shopbot 38Quadro 5 Exemplos de termos de busca natildeo adequados 39Quadro 6 Exemplos de termos de busca adequados 39Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore
exemplificada na FIGURA 12 43Quadro 8 Resultado da remoccedilatildeo de ruiacutedos 45Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes 48Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade 49Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de
dados inicialmente estabelecido 62Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10
lojas 63Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados
inicialmente estabelecido 64Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas 65
SUMAacuteRIO
1 Introduccedilatildeo 1111 Contextualizaccedilatildeo e Motivaccedilatildeo 1112 Objetivos 1313 Organizaccedilatildeo do Trabalho 132 Linguagem HTML 1421 HTML 1422 Document Object Model 1623 Seletores CSS 1724 HTML Parsers 183 Web Mining 2031 Web Content Mining 2132 Wrapper 234 Shopping Comparison 2541 Serviccedilos de Shopping Comparison 2542 Shopbot 2643 Impactos no Comeacutercio Eletrocircnico 295 Metodologia 3251 Meacutetodos 32511 Entendimento do Problema 3352 Material 34521 PHP 34522 phpQuery 34523 Ambiente Computacional 356 Arquitetura do Shopbot proposto 3661 Determinaccedilatildeo dos Termos de Busca adequados 37611 Detecccedilatildeo de Padrotildees 37612 Submissatildeo da URL e Termos de Busca 37613 Anaacutelise do HTML e Conversatildeo em Document Object Model 4062 Eliminaccedilatildeo de Ruiacutedos 4163 Ordenaccedilatildeo dos Resultados 4564 Geraccedilatildeo do Wrapper 48641 Formato do Wrapper 50642 Definindo Seletores CSS para os Anuacutencios 51643 Extraccedilatildeo do Tiacutetulo do Produto 51644 Extraccedilatildeo do Link do Produto 52645 Extraccedilatildeo do Parcelamento do Produto 53646 Extraccedilatildeo do Preccedilo do Produto 54
647 Extraccedilatildeo da Imagem do Produto 5665 Implementaccedilatildeo do Protoacutetipo 58651 Interface do Protoacutetipo 587 Resultados e Discussatildeo 6171 Resultados da Detecccedilatildeo de Padrotildees 6172 Resultados da Geraccedilatildeo de Wrapper 638 Conclusotildees e Trabalhos Futuros 66REFEREcircNCIAS 68
11
1 Introduccedilatildeo
11 Contextualizaccedilatildeo e Motivaccedilatildeo
A Era Digital tem inserido novas e importantes regras que regem a so-
ciedade moderna e o atual panorama socioeconocircmico Globalizaccedilatildeo competi-
ccedilatildeo informaccedilatildeo em grandes quantidades mudanccedilas constantes em curto espaccedilo
de tempo variedades de opccedilotildees e vaacuterios outros termos e efeitos dessa Era tecircm
surgido ao longo do tempo
Com a evoluccedilatildeo das tecnologias e o advento da Internet o comeacutercio se
modificou atraveacutes do surgimento do comeacutercio online tambeacutem chamado de e-
commerce ou comeacutercio virtual O consumidor antes limitado por barreiras ge-
ograacuteficas passou a ter acesso a um maior conjunto de lojas produtos e serviccedilos
atraveacutes da web
Segundo dados da empresa e-bit o comeacutercio eletrocircnico brasileiro alcan-
ccedilou um faturamento de R$ 187 bilhotildees em 2011 Um aumento de 26 em relaccedilatildeo
ao ano anterior quando o faturamento foi de R$ 148 bilhotildees O nuacutemero de consu-
midores que compraram pela web ao menos uma vez eacute de 32 milhotildees e apenas no
ano de 2011 foram efetuados 537 milhotildees de pedidos atraveacutes de 5000 lojas online
(EBIT 2011)
Atraveacutes das milhares de lojas o consumidor passou a ter mais opccedilotildees in-
formaccedilotildees e ofertas do que nunca Ele pode optar por fazer suas compras em gran-
des redes lojas virtuais especializadas cataacutelogos virtuais dentre outros meios E eacute
bombardeado com mensagens por diversos canais televisatildeo Internet raacutedio redes
sociais miacutedia impressa etc (MCKENNA 1999)
No entanto devido agrave imensuraacutevel quantidade de anuacutencios disponiacuteveis a
tarefa de escolher o produto desejado pelo melhor preccedilo torna-se demasiadamente
12
custosa Como um exemplo simples suponha-se um consumidor que deseja adqui-
rir uma TV LCD ele deve selecionar uma quantidade finita de lojas que conhece
buscar o produto desejado em cada loja e por fim cruzar os dados obtidos a fim
de encontrar o melhor custo-benefiacutecio Embora tal tarefa possa parecer simploacute-
ria ela se torna cada vez mais complexa agrave medida que mais lojas satildeo incluiacutedas na
pesquisa
Serviccedilos de Shopping Comparison se propotildeem a resolver esse problema
atraveacutes de um serviccedilo online baseado na web os consumidores podem encontrar
produtos preccedilos e outras informaccedilotildees de muacuteltiplas lojas online ao inveacutes de visitar
cada uma separadamente Os preccedilos e produtos satildeo apresentados na mesma inter-
face e o consumidor pode tomar a melhor decisatildeo sendo entatildeo redirecionado para
o fornecedor do produto para completar a transaccedilatildeo (WAN 2009)
Para que tais dados sejam apresentados eacute necessaacuterio que um agente de pes-
quisa de preccedilos chamado de Shopbot automaticamente pesquise uma coleccedilatildeo de
lojas online para coletar e comparar dados de um produto especificado (ZHANG
JING 2011) Entretanto natildeo existe uma padronizaccedilatildeo para a exibiccedilatildeo dos dados
dos produtos cada loja possui seu proacuteprio layout organizaccedilatildeo estrutural tecnolo-
gias etc Portanto desenvolver um bom agente de comparaccedilatildeo (shopbot) capaz
de coletar dados de muacuteltiplas fontes se torna uma tarefa natildeo trivial
A tarefa de descobrimento e anaacutelise de informaccedilotildees uacuteteis da World Wide
Web atraveacutes da busca automaacutetica de informaccedilatildeo de recursos disponiacuteveis online eacute
a definiccedilatildeo de Web Mining (COOLEY MOBASHER SRIVASTAVA 1997) Sendo este
trabalho portanto pertencente a essa linha de pesquisa
13
12 Objetivos
Este trabalho elabora um conjunto de regras e procedimentos para a de-
tecccedilatildeo de padrotildees identificaccedilatildeo de atributos extraccedilatildeo de dados em lojas de e-
commerce e geraccedilatildeo de um modelo geneacuterico e reaproveitaacutevel para cada fonte de
dados
Objetiva-se mensurar a eficiecircncia do modelo proposto em extrair dados
de produtos atraveacutes da implementaccedilatildeo de um protoacutetipo de shopbot que aplica tais
regras e procedimentos em uma aplicaccedilatildeo de Shopping Comparison
13 Organizaccedilatildeo do Trabalho
Este trabalho estaacute organizado da seguinte maneira
bull Os capiacutetulos 2 3 e 4 constituem o Referencial Teoacuterico deste trabalho No
capiacutetulo 2 tem-se a apresentaccedilatildeo de conceitos de HTML No capiacutetulo 3 eacute
realizada uma apresentaccedilatildeo sobre conceitos de Web Mining focando-se em
Web Content Mining Por fim no capiacutetulo 4 eacute dada uma definiccedilatildeo de Shop-
ping Comparison e Shopbot aleacutem dos seus impactos no comeacutercio online
bull O capiacutetulo 5 descreve a Metodologia utilizada no trabalho definindo os pro-
cedimentos metodoloacutegicos e as tecnologias utilizadas
bull No capiacutetulo 6 satildeo apresentados com detalhes as regras e procedimentos utili-
zados na construccedilatildeo do protoacutetipo de shopbot proposto neste trabalho desde
a elaboraccedilatildeo do algoritmo ateacute a interface do serviccedilo de Shopping Compari-
son
bull O capiacutetulo 7 conteacutem os resultados obtidos e algumas discussotildees a respeito
do que foi atingido
14
2 Linguagem HTML
A World Wide Web eacute uma imensa rede de informaccedilotildees Segundo o World
Wide Web Consortium a principal organizaccedilatildeo de padrotildees para a Internet a Web se
baseia em trecircs mecanismos que tornam esses recursos disponiacuteveis para o puacuteblico
mais amplo possiacutevel (CONSORTIUM 1999)
1 Um esquema de nomenclatura uniforme para a localizaccedilatildeo de recursos pre-
sentes na Web Ex Universal Resource Identifier ou URI
2 Protocolos para acesso agrave recursos nomeados na Web Ex Hypertext Trans-
fer Protocol ou HTTP
3 Hypertext para a faacutecil navegaccedilatildeo entre esses recursos Ex HTML
HTML que eacute usado para navegar entre os recursos da Web eacute tratado na
seccedilatildeo seguinte
21 HTML
HyperText Markup Language (HTML) eacute a liacutengua franca para publicaccedilatildeo
de conteuacutedo na World Wide Web Eacute um formato natildeo-proprietaacuterio que pode ser cri-
ado e processado por uma ampla variedade de ferramentas desde simples editores
de texto agrave ferramentas mais complexas de autoraccedilatildeo HTML usa tags como ltpgt
e ltpgt para estruturar o texto em tiacutetulos paraacutegrafos listas blocos imagens links
para outros documentos etc (CONSORTIUM 2010)
Um breve coacutedigo ou documento HTML eacute exibido abaixo
ltDOCTYPE html PUBLIC -W3CDTD XHTML 10 StrictEN
httpwwww3orgTRxhtml1DTDxhtml1-strictdtdgt
lthtml xmlns=httpwwww3org1999xhtml xmllang=en lang=engt
15
lthead gt
lttitle gtTitulo da Pagina HTML lttitle gt
lthead gt
ltbody gt
ltdiv id=conteudo class=blocogt
lth1gtTitulo do Texto lth1gt
ltpgtParagrafo contendo textoltpgt
ltpgtSegundo paragrafo com mais textoltpgt
ltdivgt
ltdiv class=blocogt
ltpgtltstrong gtTexto em negritoltstrong gtltpgt
ltpgtltemgtTexto em italicoltemgtltpgt
ltdivgt
ltbody gt
lthtml gt
A interpretaccedilatildeo desse coacutedigo pelo browser Google Chrome eacute exibido na
FIGURA 1
Figura 1 Interpretaccedilatildeo de coacutedigo HTML pelo browser Google Chrome
16
Apesar do HTML possuir uma grande quantidade de tags para formataccedilatildeo
de documentos existe uma limitaccedilatildeo histoacuterica em seu projeto as tags usadas satildeo
semi-estruturadas elas apenas descrevem como a informaccedilatildeo deve ser exibida mas
natildeo do que se trata os dados (WAN 2009) Dessa forma natildeo eacute uma linguagem
semacircntica que pode ter sua informaccedilatildeo trivialmente extraiacuteda e interpretada por
agentes computacionais
22 Document Object Model
Document Object Model abreviadamente chamado de DOM eacute uma in-
terface de programaccedilatildeo de aplicaccedilotildees ou API para documentos HTML vaacutelidos e
XML corretamente formatados Ela define a estrutura loacutegica dos documentos e a
maneira como seratildeo acessados e manipulados Atraveacutes da DOM programadores
podem construir documentos navegar pela sua estrutura adicionar modificar ou
remover elementos e conteuacutedo (ROBIE et al 2000)
Como eacute uma especificaccedilatildeo do World Wide Web Consortium ou W3C o
objetivo da Document Object Model eacute fornecer uma API padratildeo que possa ser
usada por uma ampla variedade de linguagens de programaccedilatildeo
No DOM os documentos tem uma estrutura loacutegica que eacute muito parecida
com uma aacutervore mais precisamente uma ldquoflorestardquo que eacute um conjunto de aacutervo-
res Cada documento conteacutem zero ou um noacute de declaraccedilatildeo de tipo de documento
(DOCTYPE) um noacute raiz e zero ou mais instruccedilotildees de processamento e comentaacute-
rios O elemento raiz funciona como o noacute raiz da aacutervore do documento (ROBIE et
al 2000)
Como exemplo considere o coacutedigo HTML apresentado na seccedilatildeo anterior
A aacutervore DOM deste documento eacute apresentada na FIGURA 2 Atraveacutes da manipu-
laccedilatildeo desta aacutervore eacute possiacutevel adicionar novos elementos atraveacutes da simples adiccedilatildeo
17
de novos noacutes agrave estrutura remover elementos atraveacutes da remoccedilatildeo de noacutes e editar
conteuacutedo textuais ou estruturais seja alterando textos ou modificando noacutes
Figura 2 Reproduccedilatildeo de uma aacutervore DOM para um documento HTML
Eacute facilmente perceptiacutevel que a API DOM eacute de suma importacircncia na anaacutelise
de conteuacutedos provenientes da World Wide Web
23 Seletores CSS
Cascading Style Sheets (CSS) eacute uma linguagem de estilo utilizada para
descrever a apresentaccedilatildeo de paacuteginas Web incluindo cores layouts fonte etc (CON-
SORTIUM 2011) Para que os elementos possam ser estilizados existem regras de
correspondecircncia para determinar quais regras se aplicam a elementos da aacutervore
DOM (BOS et al 2011)
18
Um simples exemplo de um documento CSS eacute apresentado a seguir con-
tendo alguns seletores
font -size 12px
h1
color red
p
color black
O CSS acima especifica atraveacutes do uso do seletor ldquordquo que qualquer ele-
mento do documento no qual eacute aplicado deve ter o texto no tamanho de 12 pixels
todos os elementos do tipo ldquoh1rdquo teratildeo o texto da cor vermelha e os elementos do
tipo ldquoprdquo teratildeo a cor preta especificados atraveacutes do uso de seletores homocircnimos a
esses elementos Na Quadro 1 eacute apresentada a sintaxe de alguns seletores CSS da
especificaccedilatildeo 21
Eacute importante ressaltar que seletores CSS natildeo satildeo usados unicamente para
definir estilos para paacuteginas Web Eles tambeacutem satildeo usados na navegaccedilatildeo pela aacutervore
DOM para que atributos e conteuacutedos dos noacutes possam ser recuperados modificados
ou excluiacutedos de forma mais dinacircmica Por exemplo na aacutervore DOM exibida na
FIGURA 2 o seletor ldquoconteudordquo retornaria o noacute ldquoltdivgtrdquo mais agrave esquerda
24 HTML Parsers
Um HTML Parser eacute uma ferramenta que cria uma aacutervore DOM a partir
da anaacutelise de um coacutedigo HTML (NYEIN 2011) O analisador eacute capaz de detectar
e corrigir vaacuterios erros de sintaxe HTML em documentos mal formatados (YANG
ZHANG TSAI 2008)
19
Padratildeo Significado Corresponde a qualquer ele-
mentoE Corresponde a qualquer ele-
mento E (isto eacute um elemento dotipo E)
E F Corresponde a qualquer ele-mento F que eacute descendente deum elemento E
E gt F Corresponde a qualquer ele-mento F que eacute filho do elementoE
Efirst-child Corresponde agrave primeira ocorrecircn-cia do elemento E
Ewarning Corresponde a qualquer ele-mento do tipo E que possui aclasse ldquowarningrdquo
Emyid Corresponde a qualquer ele-mento E que possui o ID ldquomyidrdquo
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011)
Normalmente eacute disponibilizada uma interface para que a aacutervore DOM
possa ser navegada Alguns parsers permitem que essa funccedilatildeo seja realizada atra-
veacutes de seletores CSS aleacutem de prover meacutetodos que permitem manipular e recuperar
informaccedilotildees de noacutes
Neste trabalho eacute utilizado o analisador de HTML phpQuery Eacute uma fer-
ramenta server-side orientado a seletores CSS3 e com meacutetodos para recuperaccedilatildeo
e manipulaccedilatildeo do Document Object Model (CUDNIK 2009)
20
3 Web Mining
Textos viacutedeos imagens e sons satildeo publicados e compartilhados a todo
momento e em todas as partes do mundo atraveacutes da World Wide Web O acompa-
nhamento absorccedilatildeo e compreensatildeo dessa imensuraacutevel quantidade de informaccedilatildeo
eacute uma tarefa impraticaacutevel ainda que em um niacutevel micro Por isso o conceito de
Web Mining foi criado por pesquisadores
Web Mining derivado da expressatildeo Data Mining pode ser amplamente
definido como a descoberta e anaacutelise de informaccedilatildeo uacutetil da World Wide Web (COO-
LEY MOBASHER SRIVASTAVA 1997)
Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e Srivastava(1997) Juacutenior (2007)
Uma taxonomia da Web Mining eacute apresentado na FIGURA 3 Nos paragraacute-
fos seguintes tem-se uma breve explicaccedilatildeo sobre cada subtoacutepico nela apresentada
sem se estender ateacute os noacutes do terceiro niacutevel
21
Web Structure Mining (Mineraccedilatildeo da Estrutura da Web) se refere ao pro-
cesso de descoberta de conhecimento atraveacutes da relaccedilatildeo entre os documentos con-
tidos na Web
Web Usage Mining (Mineraccedilatildeo do Uso da Web) analisa o padratildeo de com-
portamento de usuaacuterios na Web Como exemplo simples pode ser citado a desco-
berta de padrotildees no acesso de usuaacuterios a um determinado site em um Web server
Por fim Web Content Mining eacute tratado no subcapiacutetulo seguinte
31 Web Content Mining
Web Content Mining (Mineraccedilatildeo do Conteuacutedo da Web) eacute o processo de
extraccedilatildeo de informaccedilatildeo do conteuacutedo de documentos e seus metadados (palavras-
chave informaccedilotildees sobre produtos imagens etc) Apesar deste enfoque abranger
principalmente documentos HTML ele se estende a formatos natildeo-textuais como
imagens e viacutedeos (SANTOS 2009) Segundo Cooley Mobasher e Srivastava (1997)
Web Content Mining pode ser dividido em trecircs abordagens explicadas a seguir
A primeira delas Agent Based Approach em portuguecircs Abordagem Base-
ada em Agentes pode ser dividida nas seguintes categorias
bull Intelligent Search Agents (Agentes Inteligentes de Busca) sistemas que bus-
cam por dados relevantes organizando e interpretando a informaccedilatildeo desco-
berta FAQ-Finder (HAMMOND et al 1995) e BargainFinder (WAN PENG
2010) satildeo dois exemplos claacutessicos dessa categoria
bull Information FilteringCategorization (FiltragemCategorizaccedilatildeo de Informa-
ccedilatildeo) agentes que usam uma variedade de teacutecnicas de recuperaccedilatildeo de infor-
maccedilatildeo e caracteriacutesticas de documentos da Web para automaticamente ob-
ter filtrar e organizar a informaccedilatildeo BO (Bookmark Organizer) (MAAREK
SHAUL 1996) eacute um exemplo desse tipo de aplicaccedilatildeo tendo em vista que
22
ele organiza coleccedilotildees de documentos da Web baseados na sua informaccedilatildeo
conceitual
bull Personalized Web Agents (Agentes Web Personalizados) satildeo agentes que
aprendem as preferecircncias do usuaacuterio e descobrem informaccedilotildees da Web ba-
seada nessas preferecircncas (COOLEY MOBASHER SRIVASTAVA 1997)
A segunda abordagem Database Approach (Abordagem de Database)
foca em teacutecnicas para organizaccedilatildeo da informaccedilatildeo semi-estruturada da Web em
dados mais estruturados usando mecanismos padrotildees de consulta agrave databases e
teacutecnicas de data mining para anaacutelise Pode ser dividido em duas categorias
bull Multilevel Databases (Databases Multiniacuteveis) a principal ideia dessa abor-
dagem eacute que o niacutevel mais baixo da database contenha informaccedilatildeo semi-
estruturada armazenada em vaacuterios repositoacuterios Web Nos niacuteveis mais altos
meta dados ou generalizaccedilotildees satildeo extraiacutedos dos niacuteveis mais baixos e orga-
nizados em coleccedilotildees estruturadas como databases relacionais orientadas a
objetos (COOLEY MOBASHER SRIVASTAVA 1997)
bull Web Query Systems (Sistemas de Consultas Web) sistemas que utilizam
padrotildees de consultas a databases ou a informaccedilotildees estruturais sobre docu-
mentos Web e ateacute processadores de linguagens naturais para processar as
consultas que satildeo realizadas nas buscas na Internet (COOLEY MOBASHER
SRIVASTAVA 1997)
Este trabalho estaacute situado na aacuterea de Web Content Mining especificamente
na Abordagem Baseada em Agentes na categoria de Agentes Inteligentes de Busca
visto que o conteuacutedo presente no HTML de paacuteginas de e-commerce seratildeo anali-
sados por um robocirc de busca inteligente que coletaraacute e organizaraacute a informaccedilatildeo
relevante
23
32 Wrapper
A World Wide Web natildeo eacute estruturada de forma a apresentar informaccedilotildees
que possam ser lidas por maacutequinas A maioria da imensuraacutevel quantidade de dados
presente na Web estaacute apresentada em estruturas fracamente semacircnticas que natildeo po-
dem ser compreendidas por agentes (DOORENBOS ETZIONI WELD 1997) Faz-se
necessaacuterio entatildeo uma regra de traduccedilatildeo para cada fonte de dados A esse ldquotradutorrdquo
eacute dado o nome de wrapper (KUSHMERICK 1997 COWIE LEHNERT 1996)
Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers Fonte Yanget al (2000)
Formalmente um wrapper eacute um programa agente ou conjunto de regras
que entende a informaccedilatildeo de uma fonte e a traduz em uma forma regular e compre-
ensiacutevel que pode ser usada por outros agentes Um wrapper eacute especializado apenas
em uma uacutenica fonte de informaccedilotildees (YANG et al 2000) A FIGURA 4 mostra um
sistema de integraccedilatildeo de informaccedilotildees usando vaacuterios wrappers cada um para uma
fonte especiacutefica de informaccedilatildeo
24
Segundo Firat (2003) wrappers podem ser divididos em trecircs tipos baseado
no seu niacutevel de automaccedilatildeo
bull Manual codificar manualmente um wrapper normalmente eacute uma tarefa
tediosa e em alguns casos impraticaacutevel O nuacutemero de fontes de dados pode
ser muito grande ou crescer rapidamente e a estrutura e o conteuacutedo da fonte
pode frequentemente mudar Todos esses fatores tornam essa tarefa manual
altamente custosa e demorada (TATBUL et al 2001)
bull Semi-automaacutetico (interativo) em alguns casos as regras de um wrap-
per que lida com os detalhes especiacuteficos de uma fonte de dados eacute relati-
vamente pequena A outra parte eacute igual em todos os wrappers ou pode ser
gerada semi-automaticamente baseada em uma descriccedilatildeo declarativa dada
pelo usuaacuterio (TATBUL et al 2001)
bull Automaacutetico a geraccedilatildeo automaacutetica de um wrapper significa que natildeo haacute
intervenccedilatildeo humana nesse processo Ferramentas de geraccedilatildeo automaacutetica
podem ser especiacuteficas pra um site ou geneacutericas normalmente necessitam de
um estaacutegio de treinamento e satildeo baseados em algoritmos de aprendizado
supervisionado (TATBUL et al 2001)
Neste trabalho o wrapper gerado seraacute um conjunto de seletores CSS que
especificam quais dados de paacuteginas Web devem ser extraiacutedos gerando informaccedilotildees
relevantes a partir de documentos semi-estruturados
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
AGRADECIMENTOS
Agradeccedilo inicialmente aos meus pais Faustino Bisso Alonso Neto e
Maria Perpeacutetua da Silva Alonso por todo o apoio forccedila incentivo e
carinho E agrave minha irmatilde Letiacutecia Silva Alonso que mesmo distante
sempre se fez presente Sem vocecircs eu natildeo teria chegado ateacute aqui
Um imenso obrigado ao professor Ahmed com quem trabalhei todos
esses anos e aprendi muito Natildeo poderia deixar de mencionar meu
orientador Tiago que apoiou e contribuiu muito para este trabalho
Vocecircs foram os melhores que eu poderia encontrar
Agrave minha turma de Computaccedilatildeo (20081) fica meu muito obrigado e
um ateacute logo por todos os momentos vividos
Aos meus companheiros de trabalho do NTE e do LICESA minha
imensa gratidatildeo por todo aprendizado e grandes momentos vividos
Jamais seratildeo esquecidos
Por fim agradeccedilo aos meus amigos que de uma forma ou de outra
fizeram parte dessa caminhada Muito obrigado
RESUMO
Os serviccedilos de comparaccedilatildeo de preccedilos chamados de Shopping Compari-son tecircm impactado o setor de comeacutercio online e oferecido informaccedilotildees de valorpara que o consumidor efetue decisotildees de compra
No entanto extrair os dados de muacuteltiplas lojas online mostra-se uma ta-refa natildeo trivial tendo em vista que documentos HTML satildeo semi-estruturados epossuem um baixo valor semacircntico
Neste trabalho propotildee-se um agente de Shopping Comparison ou Shopbotque atraveacutes da detecccedilatildeo de padrotildees em documentos HTML consegue determinaraonde estatildeo os produtos e seus atributos gerando um modelo reaproveitaacutevel capazde traduzir os dados semi-estruturados em informaccedilotildees
Os resultados indicam que o protoacutetipo desenvolvido eacute completamente viaacute-vel e mostrou-se funcional na maior parte das lojas analisadas
Palavras-chave Shopping Comparison Shopbot Web Content Mining
ABSTRACT
The Shopping Comparison services has impacted the online commerceand offered valuable information for the consumer to make purchasing decisions
However extract the data from multiple vendors is a nontrivial task consi-dering that HTML documents are semi-structured and have a low semantic value
In this work is proposed a Shopping Comparison agent or Shopbot thatby detecting patterns in HTML documents can determine where are the productsand his attributes generating a reusable model able to translate the semi-structureddata into valuable information
The results show that the prototype developed is entirely viable and provedto be functional in most vendors analyzed
Keywords Shopping Comparison Shopbot Web Content Mining
LISTA DE FIGURAS
Figura 1 Interpretaccedilatildeo de coacutedigo HTML pelo browser Google Chrome 15Figura 2 Reproduccedilatildeo de uma aacutervore DOM para um documento HTML 17Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e
Srivastava (1997) Juacutenior (2007) 20Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers
Fonte Yang et al (2000) 23Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e
Peng (2010) 25Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte
Yang et al (2000) 27Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em
bilhotildees) Fonte ebit (2011) 29Figura 8 Arquitetura do shopbot proposto 36Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fonte
httpvinaytechwordpresscom20081124ajax-and-dom 40Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em
forma de lista 41Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em
forma de grade 42Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo
do algoritmo poacutes-ordem 43Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos
em um mesmo anuacutencio 55Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios
diferentes 57Figura 15 Interface inicial do protoacutetipo 59Figura 16 Interface do protoacutetipo exibindo resultados para a busca por
ldquogalaxy noterdquo 60
LISTA DE QUADROS
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011) 19Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do
protoacutetipo 32Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do
protoacutetipo 33Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como
entrada para o shopbot 38Quadro 5 Exemplos de termos de busca natildeo adequados 39Quadro 6 Exemplos de termos de busca adequados 39Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore
exemplificada na FIGURA 12 43Quadro 8 Resultado da remoccedilatildeo de ruiacutedos 45Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes 48Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade 49Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de
dados inicialmente estabelecido 62Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10
lojas 63Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados
inicialmente estabelecido 64Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas 65
SUMAacuteRIO
1 Introduccedilatildeo 1111 Contextualizaccedilatildeo e Motivaccedilatildeo 1112 Objetivos 1313 Organizaccedilatildeo do Trabalho 132 Linguagem HTML 1421 HTML 1422 Document Object Model 1623 Seletores CSS 1724 HTML Parsers 183 Web Mining 2031 Web Content Mining 2132 Wrapper 234 Shopping Comparison 2541 Serviccedilos de Shopping Comparison 2542 Shopbot 2643 Impactos no Comeacutercio Eletrocircnico 295 Metodologia 3251 Meacutetodos 32511 Entendimento do Problema 3352 Material 34521 PHP 34522 phpQuery 34523 Ambiente Computacional 356 Arquitetura do Shopbot proposto 3661 Determinaccedilatildeo dos Termos de Busca adequados 37611 Detecccedilatildeo de Padrotildees 37612 Submissatildeo da URL e Termos de Busca 37613 Anaacutelise do HTML e Conversatildeo em Document Object Model 4062 Eliminaccedilatildeo de Ruiacutedos 4163 Ordenaccedilatildeo dos Resultados 4564 Geraccedilatildeo do Wrapper 48641 Formato do Wrapper 50642 Definindo Seletores CSS para os Anuacutencios 51643 Extraccedilatildeo do Tiacutetulo do Produto 51644 Extraccedilatildeo do Link do Produto 52645 Extraccedilatildeo do Parcelamento do Produto 53646 Extraccedilatildeo do Preccedilo do Produto 54
647 Extraccedilatildeo da Imagem do Produto 5665 Implementaccedilatildeo do Protoacutetipo 58651 Interface do Protoacutetipo 587 Resultados e Discussatildeo 6171 Resultados da Detecccedilatildeo de Padrotildees 6172 Resultados da Geraccedilatildeo de Wrapper 638 Conclusotildees e Trabalhos Futuros 66REFEREcircNCIAS 68
11
1 Introduccedilatildeo
11 Contextualizaccedilatildeo e Motivaccedilatildeo
A Era Digital tem inserido novas e importantes regras que regem a so-
ciedade moderna e o atual panorama socioeconocircmico Globalizaccedilatildeo competi-
ccedilatildeo informaccedilatildeo em grandes quantidades mudanccedilas constantes em curto espaccedilo
de tempo variedades de opccedilotildees e vaacuterios outros termos e efeitos dessa Era tecircm
surgido ao longo do tempo
Com a evoluccedilatildeo das tecnologias e o advento da Internet o comeacutercio se
modificou atraveacutes do surgimento do comeacutercio online tambeacutem chamado de e-
commerce ou comeacutercio virtual O consumidor antes limitado por barreiras ge-
ograacuteficas passou a ter acesso a um maior conjunto de lojas produtos e serviccedilos
atraveacutes da web
Segundo dados da empresa e-bit o comeacutercio eletrocircnico brasileiro alcan-
ccedilou um faturamento de R$ 187 bilhotildees em 2011 Um aumento de 26 em relaccedilatildeo
ao ano anterior quando o faturamento foi de R$ 148 bilhotildees O nuacutemero de consu-
midores que compraram pela web ao menos uma vez eacute de 32 milhotildees e apenas no
ano de 2011 foram efetuados 537 milhotildees de pedidos atraveacutes de 5000 lojas online
(EBIT 2011)
Atraveacutes das milhares de lojas o consumidor passou a ter mais opccedilotildees in-
formaccedilotildees e ofertas do que nunca Ele pode optar por fazer suas compras em gran-
des redes lojas virtuais especializadas cataacutelogos virtuais dentre outros meios E eacute
bombardeado com mensagens por diversos canais televisatildeo Internet raacutedio redes
sociais miacutedia impressa etc (MCKENNA 1999)
No entanto devido agrave imensuraacutevel quantidade de anuacutencios disponiacuteveis a
tarefa de escolher o produto desejado pelo melhor preccedilo torna-se demasiadamente
12
custosa Como um exemplo simples suponha-se um consumidor que deseja adqui-
rir uma TV LCD ele deve selecionar uma quantidade finita de lojas que conhece
buscar o produto desejado em cada loja e por fim cruzar os dados obtidos a fim
de encontrar o melhor custo-benefiacutecio Embora tal tarefa possa parecer simploacute-
ria ela se torna cada vez mais complexa agrave medida que mais lojas satildeo incluiacutedas na
pesquisa
Serviccedilos de Shopping Comparison se propotildeem a resolver esse problema
atraveacutes de um serviccedilo online baseado na web os consumidores podem encontrar
produtos preccedilos e outras informaccedilotildees de muacuteltiplas lojas online ao inveacutes de visitar
cada uma separadamente Os preccedilos e produtos satildeo apresentados na mesma inter-
face e o consumidor pode tomar a melhor decisatildeo sendo entatildeo redirecionado para
o fornecedor do produto para completar a transaccedilatildeo (WAN 2009)
Para que tais dados sejam apresentados eacute necessaacuterio que um agente de pes-
quisa de preccedilos chamado de Shopbot automaticamente pesquise uma coleccedilatildeo de
lojas online para coletar e comparar dados de um produto especificado (ZHANG
JING 2011) Entretanto natildeo existe uma padronizaccedilatildeo para a exibiccedilatildeo dos dados
dos produtos cada loja possui seu proacuteprio layout organizaccedilatildeo estrutural tecnolo-
gias etc Portanto desenvolver um bom agente de comparaccedilatildeo (shopbot) capaz
de coletar dados de muacuteltiplas fontes se torna uma tarefa natildeo trivial
A tarefa de descobrimento e anaacutelise de informaccedilotildees uacuteteis da World Wide
Web atraveacutes da busca automaacutetica de informaccedilatildeo de recursos disponiacuteveis online eacute
a definiccedilatildeo de Web Mining (COOLEY MOBASHER SRIVASTAVA 1997) Sendo este
trabalho portanto pertencente a essa linha de pesquisa
13
12 Objetivos
Este trabalho elabora um conjunto de regras e procedimentos para a de-
tecccedilatildeo de padrotildees identificaccedilatildeo de atributos extraccedilatildeo de dados em lojas de e-
commerce e geraccedilatildeo de um modelo geneacuterico e reaproveitaacutevel para cada fonte de
dados
Objetiva-se mensurar a eficiecircncia do modelo proposto em extrair dados
de produtos atraveacutes da implementaccedilatildeo de um protoacutetipo de shopbot que aplica tais
regras e procedimentos em uma aplicaccedilatildeo de Shopping Comparison
13 Organizaccedilatildeo do Trabalho
Este trabalho estaacute organizado da seguinte maneira
bull Os capiacutetulos 2 3 e 4 constituem o Referencial Teoacuterico deste trabalho No
capiacutetulo 2 tem-se a apresentaccedilatildeo de conceitos de HTML No capiacutetulo 3 eacute
realizada uma apresentaccedilatildeo sobre conceitos de Web Mining focando-se em
Web Content Mining Por fim no capiacutetulo 4 eacute dada uma definiccedilatildeo de Shop-
ping Comparison e Shopbot aleacutem dos seus impactos no comeacutercio online
bull O capiacutetulo 5 descreve a Metodologia utilizada no trabalho definindo os pro-
cedimentos metodoloacutegicos e as tecnologias utilizadas
bull No capiacutetulo 6 satildeo apresentados com detalhes as regras e procedimentos utili-
zados na construccedilatildeo do protoacutetipo de shopbot proposto neste trabalho desde
a elaboraccedilatildeo do algoritmo ateacute a interface do serviccedilo de Shopping Compari-
son
bull O capiacutetulo 7 conteacutem os resultados obtidos e algumas discussotildees a respeito
do que foi atingido
14
2 Linguagem HTML
A World Wide Web eacute uma imensa rede de informaccedilotildees Segundo o World
Wide Web Consortium a principal organizaccedilatildeo de padrotildees para a Internet a Web se
baseia em trecircs mecanismos que tornam esses recursos disponiacuteveis para o puacuteblico
mais amplo possiacutevel (CONSORTIUM 1999)
1 Um esquema de nomenclatura uniforme para a localizaccedilatildeo de recursos pre-
sentes na Web Ex Universal Resource Identifier ou URI
2 Protocolos para acesso agrave recursos nomeados na Web Ex Hypertext Trans-
fer Protocol ou HTTP
3 Hypertext para a faacutecil navegaccedilatildeo entre esses recursos Ex HTML
HTML que eacute usado para navegar entre os recursos da Web eacute tratado na
seccedilatildeo seguinte
21 HTML
HyperText Markup Language (HTML) eacute a liacutengua franca para publicaccedilatildeo
de conteuacutedo na World Wide Web Eacute um formato natildeo-proprietaacuterio que pode ser cri-
ado e processado por uma ampla variedade de ferramentas desde simples editores
de texto agrave ferramentas mais complexas de autoraccedilatildeo HTML usa tags como ltpgt
e ltpgt para estruturar o texto em tiacutetulos paraacutegrafos listas blocos imagens links
para outros documentos etc (CONSORTIUM 2010)
Um breve coacutedigo ou documento HTML eacute exibido abaixo
ltDOCTYPE html PUBLIC -W3CDTD XHTML 10 StrictEN
httpwwww3orgTRxhtml1DTDxhtml1-strictdtdgt
lthtml xmlns=httpwwww3org1999xhtml xmllang=en lang=engt
15
lthead gt
lttitle gtTitulo da Pagina HTML lttitle gt
lthead gt
ltbody gt
ltdiv id=conteudo class=blocogt
lth1gtTitulo do Texto lth1gt
ltpgtParagrafo contendo textoltpgt
ltpgtSegundo paragrafo com mais textoltpgt
ltdivgt
ltdiv class=blocogt
ltpgtltstrong gtTexto em negritoltstrong gtltpgt
ltpgtltemgtTexto em italicoltemgtltpgt
ltdivgt
ltbody gt
lthtml gt
A interpretaccedilatildeo desse coacutedigo pelo browser Google Chrome eacute exibido na
FIGURA 1
Figura 1 Interpretaccedilatildeo de coacutedigo HTML pelo browser Google Chrome
16
Apesar do HTML possuir uma grande quantidade de tags para formataccedilatildeo
de documentos existe uma limitaccedilatildeo histoacuterica em seu projeto as tags usadas satildeo
semi-estruturadas elas apenas descrevem como a informaccedilatildeo deve ser exibida mas
natildeo do que se trata os dados (WAN 2009) Dessa forma natildeo eacute uma linguagem
semacircntica que pode ter sua informaccedilatildeo trivialmente extraiacuteda e interpretada por
agentes computacionais
22 Document Object Model
Document Object Model abreviadamente chamado de DOM eacute uma in-
terface de programaccedilatildeo de aplicaccedilotildees ou API para documentos HTML vaacutelidos e
XML corretamente formatados Ela define a estrutura loacutegica dos documentos e a
maneira como seratildeo acessados e manipulados Atraveacutes da DOM programadores
podem construir documentos navegar pela sua estrutura adicionar modificar ou
remover elementos e conteuacutedo (ROBIE et al 2000)
Como eacute uma especificaccedilatildeo do World Wide Web Consortium ou W3C o
objetivo da Document Object Model eacute fornecer uma API padratildeo que possa ser
usada por uma ampla variedade de linguagens de programaccedilatildeo
No DOM os documentos tem uma estrutura loacutegica que eacute muito parecida
com uma aacutervore mais precisamente uma ldquoflorestardquo que eacute um conjunto de aacutervo-
res Cada documento conteacutem zero ou um noacute de declaraccedilatildeo de tipo de documento
(DOCTYPE) um noacute raiz e zero ou mais instruccedilotildees de processamento e comentaacute-
rios O elemento raiz funciona como o noacute raiz da aacutervore do documento (ROBIE et
al 2000)
Como exemplo considere o coacutedigo HTML apresentado na seccedilatildeo anterior
A aacutervore DOM deste documento eacute apresentada na FIGURA 2 Atraveacutes da manipu-
laccedilatildeo desta aacutervore eacute possiacutevel adicionar novos elementos atraveacutes da simples adiccedilatildeo
17
de novos noacutes agrave estrutura remover elementos atraveacutes da remoccedilatildeo de noacutes e editar
conteuacutedo textuais ou estruturais seja alterando textos ou modificando noacutes
Figura 2 Reproduccedilatildeo de uma aacutervore DOM para um documento HTML
Eacute facilmente perceptiacutevel que a API DOM eacute de suma importacircncia na anaacutelise
de conteuacutedos provenientes da World Wide Web
23 Seletores CSS
Cascading Style Sheets (CSS) eacute uma linguagem de estilo utilizada para
descrever a apresentaccedilatildeo de paacuteginas Web incluindo cores layouts fonte etc (CON-
SORTIUM 2011) Para que os elementos possam ser estilizados existem regras de
correspondecircncia para determinar quais regras se aplicam a elementos da aacutervore
DOM (BOS et al 2011)
18
Um simples exemplo de um documento CSS eacute apresentado a seguir con-
tendo alguns seletores
font -size 12px
h1
color red
p
color black
O CSS acima especifica atraveacutes do uso do seletor ldquordquo que qualquer ele-
mento do documento no qual eacute aplicado deve ter o texto no tamanho de 12 pixels
todos os elementos do tipo ldquoh1rdquo teratildeo o texto da cor vermelha e os elementos do
tipo ldquoprdquo teratildeo a cor preta especificados atraveacutes do uso de seletores homocircnimos a
esses elementos Na Quadro 1 eacute apresentada a sintaxe de alguns seletores CSS da
especificaccedilatildeo 21
Eacute importante ressaltar que seletores CSS natildeo satildeo usados unicamente para
definir estilos para paacuteginas Web Eles tambeacutem satildeo usados na navegaccedilatildeo pela aacutervore
DOM para que atributos e conteuacutedos dos noacutes possam ser recuperados modificados
ou excluiacutedos de forma mais dinacircmica Por exemplo na aacutervore DOM exibida na
FIGURA 2 o seletor ldquoconteudordquo retornaria o noacute ldquoltdivgtrdquo mais agrave esquerda
24 HTML Parsers
Um HTML Parser eacute uma ferramenta que cria uma aacutervore DOM a partir
da anaacutelise de um coacutedigo HTML (NYEIN 2011) O analisador eacute capaz de detectar
e corrigir vaacuterios erros de sintaxe HTML em documentos mal formatados (YANG
ZHANG TSAI 2008)
19
Padratildeo Significado Corresponde a qualquer ele-
mentoE Corresponde a qualquer ele-
mento E (isto eacute um elemento dotipo E)
E F Corresponde a qualquer ele-mento F que eacute descendente deum elemento E
E gt F Corresponde a qualquer ele-mento F que eacute filho do elementoE
Efirst-child Corresponde agrave primeira ocorrecircn-cia do elemento E
Ewarning Corresponde a qualquer ele-mento do tipo E que possui aclasse ldquowarningrdquo
Emyid Corresponde a qualquer ele-mento E que possui o ID ldquomyidrdquo
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011)
Normalmente eacute disponibilizada uma interface para que a aacutervore DOM
possa ser navegada Alguns parsers permitem que essa funccedilatildeo seja realizada atra-
veacutes de seletores CSS aleacutem de prover meacutetodos que permitem manipular e recuperar
informaccedilotildees de noacutes
Neste trabalho eacute utilizado o analisador de HTML phpQuery Eacute uma fer-
ramenta server-side orientado a seletores CSS3 e com meacutetodos para recuperaccedilatildeo
e manipulaccedilatildeo do Document Object Model (CUDNIK 2009)
20
3 Web Mining
Textos viacutedeos imagens e sons satildeo publicados e compartilhados a todo
momento e em todas as partes do mundo atraveacutes da World Wide Web O acompa-
nhamento absorccedilatildeo e compreensatildeo dessa imensuraacutevel quantidade de informaccedilatildeo
eacute uma tarefa impraticaacutevel ainda que em um niacutevel micro Por isso o conceito de
Web Mining foi criado por pesquisadores
Web Mining derivado da expressatildeo Data Mining pode ser amplamente
definido como a descoberta e anaacutelise de informaccedilatildeo uacutetil da World Wide Web (COO-
LEY MOBASHER SRIVASTAVA 1997)
Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e Srivastava(1997) Juacutenior (2007)
Uma taxonomia da Web Mining eacute apresentado na FIGURA 3 Nos paragraacute-
fos seguintes tem-se uma breve explicaccedilatildeo sobre cada subtoacutepico nela apresentada
sem se estender ateacute os noacutes do terceiro niacutevel
21
Web Structure Mining (Mineraccedilatildeo da Estrutura da Web) se refere ao pro-
cesso de descoberta de conhecimento atraveacutes da relaccedilatildeo entre os documentos con-
tidos na Web
Web Usage Mining (Mineraccedilatildeo do Uso da Web) analisa o padratildeo de com-
portamento de usuaacuterios na Web Como exemplo simples pode ser citado a desco-
berta de padrotildees no acesso de usuaacuterios a um determinado site em um Web server
Por fim Web Content Mining eacute tratado no subcapiacutetulo seguinte
31 Web Content Mining
Web Content Mining (Mineraccedilatildeo do Conteuacutedo da Web) eacute o processo de
extraccedilatildeo de informaccedilatildeo do conteuacutedo de documentos e seus metadados (palavras-
chave informaccedilotildees sobre produtos imagens etc) Apesar deste enfoque abranger
principalmente documentos HTML ele se estende a formatos natildeo-textuais como
imagens e viacutedeos (SANTOS 2009) Segundo Cooley Mobasher e Srivastava (1997)
Web Content Mining pode ser dividido em trecircs abordagens explicadas a seguir
A primeira delas Agent Based Approach em portuguecircs Abordagem Base-
ada em Agentes pode ser dividida nas seguintes categorias
bull Intelligent Search Agents (Agentes Inteligentes de Busca) sistemas que bus-
cam por dados relevantes organizando e interpretando a informaccedilatildeo desco-
berta FAQ-Finder (HAMMOND et al 1995) e BargainFinder (WAN PENG
2010) satildeo dois exemplos claacutessicos dessa categoria
bull Information FilteringCategorization (FiltragemCategorizaccedilatildeo de Informa-
ccedilatildeo) agentes que usam uma variedade de teacutecnicas de recuperaccedilatildeo de infor-
maccedilatildeo e caracteriacutesticas de documentos da Web para automaticamente ob-
ter filtrar e organizar a informaccedilatildeo BO (Bookmark Organizer) (MAAREK
SHAUL 1996) eacute um exemplo desse tipo de aplicaccedilatildeo tendo em vista que
22
ele organiza coleccedilotildees de documentos da Web baseados na sua informaccedilatildeo
conceitual
bull Personalized Web Agents (Agentes Web Personalizados) satildeo agentes que
aprendem as preferecircncias do usuaacuterio e descobrem informaccedilotildees da Web ba-
seada nessas preferecircncas (COOLEY MOBASHER SRIVASTAVA 1997)
A segunda abordagem Database Approach (Abordagem de Database)
foca em teacutecnicas para organizaccedilatildeo da informaccedilatildeo semi-estruturada da Web em
dados mais estruturados usando mecanismos padrotildees de consulta agrave databases e
teacutecnicas de data mining para anaacutelise Pode ser dividido em duas categorias
bull Multilevel Databases (Databases Multiniacuteveis) a principal ideia dessa abor-
dagem eacute que o niacutevel mais baixo da database contenha informaccedilatildeo semi-
estruturada armazenada em vaacuterios repositoacuterios Web Nos niacuteveis mais altos
meta dados ou generalizaccedilotildees satildeo extraiacutedos dos niacuteveis mais baixos e orga-
nizados em coleccedilotildees estruturadas como databases relacionais orientadas a
objetos (COOLEY MOBASHER SRIVASTAVA 1997)
bull Web Query Systems (Sistemas de Consultas Web) sistemas que utilizam
padrotildees de consultas a databases ou a informaccedilotildees estruturais sobre docu-
mentos Web e ateacute processadores de linguagens naturais para processar as
consultas que satildeo realizadas nas buscas na Internet (COOLEY MOBASHER
SRIVASTAVA 1997)
Este trabalho estaacute situado na aacuterea de Web Content Mining especificamente
na Abordagem Baseada em Agentes na categoria de Agentes Inteligentes de Busca
visto que o conteuacutedo presente no HTML de paacuteginas de e-commerce seratildeo anali-
sados por um robocirc de busca inteligente que coletaraacute e organizaraacute a informaccedilatildeo
relevante
23
32 Wrapper
A World Wide Web natildeo eacute estruturada de forma a apresentar informaccedilotildees
que possam ser lidas por maacutequinas A maioria da imensuraacutevel quantidade de dados
presente na Web estaacute apresentada em estruturas fracamente semacircnticas que natildeo po-
dem ser compreendidas por agentes (DOORENBOS ETZIONI WELD 1997) Faz-se
necessaacuterio entatildeo uma regra de traduccedilatildeo para cada fonte de dados A esse ldquotradutorrdquo
eacute dado o nome de wrapper (KUSHMERICK 1997 COWIE LEHNERT 1996)
Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers Fonte Yanget al (2000)
Formalmente um wrapper eacute um programa agente ou conjunto de regras
que entende a informaccedilatildeo de uma fonte e a traduz em uma forma regular e compre-
ensiacutevel que pode ser usada por outros agentes Um wrapper eacute especializado apenas
em uma uacutenica fonte de informaccedilotildees (YANG et al 2000) A FIGURA 4 mostra um
sistema de integraccedilatildeo de informaccedilotildees usando vaacuterios wrappers cada um para uma
fonte especiacutefica de informaccedilatildeo
24
Segundo Firat (2003) wrappers podem ser divididos em trecircs tipos baseado
no seu niacutevel de automaccedilatildeo
bull Manual codificar manualmente um wrapper normalmente eacute uma tarefa
tediosa e em alguns casos impraticaacutevel O nuacutemero de fontes de dados pode
ser muito grande ou crescer rapidamente e a estrutura e o conteuacutedo da fonte
pode frequentemente mudar Todos esses fatores tornam essa tarefa manual
altamente custosa e demorada (TATBUL et al 2001)
bull Semi-automaacutetico (interativo) em alguns casos as regras de um wrap-
per que lida com os detalhes especiacuteficos de uma fonte de dados eacute relati-
vamente pequena A outra parte eacute igual em todos os wrappers ou pode ser
gerada semi-automaticamente baseada em uma descriccedilatildeo declarativa dada
pelo usuaacuterio (TATBUL et al 2001)
bull Automaacutetico a geraccedilatildeo automaacutetica de um wrapper significa que natildeo haacute
intervenccedilatildeo humana nesse processo Ferramentas de geraccedilatildeo automaacutetica
podem ser especiacuteficas pra um site ou geneacutericas normalmente necessitam de
um estaacutegio de treinamento e satildeo baseados em algoritmos de aprendizado
supervisionado (TATBUL et al 2001)
Neste trabalho o wrapper gerado seraacute um conjunto de seletores CSS que
especificam quais dados de paacuteginas Web devem ser extraiacutedos gerando informaccedilotildees
relevantes a partir de documentos semi-estruturados
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
RESUMO
Os serviccedilos de comparaccedilatildeo de preccedilos chamados de Shopping Compari-son tecircm impactado o setor de comeacutercio online e oferecido informaccedilotildees de valorpara que o consumidor efetue decisotildees de compra
No entanto extrair os dados de muacuteltiplas lojas online mostra-se uma ta-refa natildeo trivial tendo em vista que documentos HTML satildeo semi-estruturados epossuem um baixo valor semacircntico
Neste trabalho propotildee-se um agente de Shopping Comparison ou Shopbotque atraveacutes da detecccedilatildeo de padrotildees em documentos HTML consegue determinaraonde estatildeo os produtos e seus atributos gerando um modelo reaproveitaacutevel capazde traduzir os dados semi-estruturados em informaccedilotildees
Os resultados indicam que o protoacutetipo desenvolvido eacute completamente viaacute-vel e mostrou-se funcional na maior parte das lojas analisadas
Palavras-chave Shopping Comparison Shopbot Web Content Mining
ABSTRACT
The Shopping Comparison services has impacted the online commerceand offered valuable information for the consumer to make purchasing decisions
However extract the data from multiple vendors is a nontrivial task consi-dering that HTML documents are semi-structured and have a low semantic value
In this work is proposed a Shopping Comparison agent or Shopbot thatby detecting patterns in HTML documents can determine where are the productsand his attributes generating a reusable model able to translate the semi-structureddata into valuable information
The results show that the prototype developed is entirely viable and provedto be functional in most vendors analyzed
Keywords Shopping Comparison Shopbot Web Content Mining
LISTA DE FIGURAS
Figura 1 Interpretaccedilatildeo de coacutedigo HTML pelo browser Google Chrome 15Figura 2 Reproduccedilatildeo de uma aacutervore DOM para um documento HTML 17Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e
Srivastava (1997) Juacutenior (2007) 20Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers
Fonte Yang et al (2000) 23Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e
Peng (2010) 25Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte
Yang et al (2000) 27Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em
bilhotildees) Fonte ebit (2011) 29Figura 8 Arquitetura do shopbot proposto 36Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fonte
httpvinaytechwordpresscom20081124ajax-and-dom 40Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em
forma de lista 41Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em
forma de grade 42Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo
do algoritmo poacutes-ordem 43Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos
em um mesmo anuacutencio 55Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios
diferentes 57Figura 15 Interface inicial do protoacutetipo 59Figura 16 Interface do protoacutetipo exibindo resultados para a busca por
ldquogalaxy noterdquo 60
LISTA DE QUADROS
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011) 19Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do
protoacutetipo 32Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do
protoacutetipo 33Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como
entrada para o shopbot 38Quadro 5 Exemplos de termos de busca natildeo adequados 39Quadro 6 Exemplos de termos de busca adequados 39Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore
exemplificada na FIGURA 12 43Quadro 8 Resultado da remoccedilatildeo de ruiacutedos 45Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes 48Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade 49Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de
dados inicialmente estabelecido 62Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10
lojas 63Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados
inicialmente estabelecido 64Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas 65
SUMAacuteRIO
1 Introduccedilatildeo 1111 Contextualizaccedilatildeo e Motivaccedilatildeo 1112 Objetivos 1313 Organizaccedilatildeo do Trabalho 132 Linguagem HTML 1421 HTML 1422 Document Object Model 1623 Seletores CSS 1724 HTML Parsers 183 Web Mining 2031 Web Content Mining 2132 Wrapper 234 Shopping Comparison 2541 Serviccedilos de Shopping Comparison 2542 Shopbot 2643 Impactos no Comeacutercio Eletrocircnico 295 Metodologia 3251 Meacutetodos 32511 Entendimento do Problema 3352 Material 34521 PHP 34522 phpQuery 34523 Ambiente Computacional 356 Arquitetura do Shopbot proposto 3661 Determinaccedilatildeo dos Termos de Busca adequados 37611 Detecccedilatildeo de Padrotildees 37612 Submissatildeo da URL e Termos de Busca 37613 Anaacutelise do HTML e Conversatildeo em Document Object Model 4062 Eliminaccedilatildeo de Ruiacutedos 4163 Ordenaccedilatildeo dos Resultados 4564 Geraccedilatildeo do Wrapper 48641 Formato do Wrapper 50642 Definindo Seletores CSS para os Anuacutencios 51643 Extraccedilatildeo do Tiacutetulo do Produto 51644 Extraccedilatildeo do Link do Produto 52645 Extraccedilatildeo do Parcelamento do Produto 53646 Extraccedilatildeo do Preccedilo do Produto 54
647 Extraccedilatildeo da Imagem do Produto 5665 Implementaccedilatildeo do Protoacutetipo 58651 Interface do Protoacutetipo 587 Resultados e Discussatildeo 6171 Resultados da Detecccedilatildeo de Padrotildees 6172 Resultados da Geraccedilatildeo de Wrapper 638 Conclusotildees e Trabalhos Futuros 66REFEREcircNCIAS 68
11
1 Introduccedilatildeo
11 Contextualizaccedilatildeo e Motivaccedilatildeo
A Era Digital tem inserido novas e importantes regras que regem a so-
ciedade moderna e o atual panorama socioeconocircmico Globalizaccedilatildeo competi-
ccedilatildeo informaccedilatildeo em grandes quantidades mudanccedilas constantes em curto espaccedilo
de tempo variedades de opccedilotildees e vaacuterios outros termos e efeitos dessa Era tecircm
surgido ao longo do tempo
Com a evoluccedilatildeo das tecnologias e o advento da Internet o comeacutercio se
modificou atraveacutes do surgimento do comeacutercio online tambeacutem chamado de e-
commerce ou comeacutercio virtual O consumidor antes limitado por barreiras ge-
ograacuteficas passou a ter acesso a um maior conjunto de lojas produtos e serviccedilos
atraveacutes da web
Segundo dados da empresa e-bit o comeacutercio eletrocircnico brasileiro alcan-
ccedilou um faturamento de R$ 187 bilhotildees em 2011 Um aumento de 26 em relaccedilatildeo
ao ano anterior quando o faturamento foi de R$ 148 bilhotildees O nuacutemero de consu-
midores que compraram pela web ao menos uma vez eacute de 32 milhotildees e apenas no
ano de 2011 foram efetuados 537 milhotildees de pedidos atraveacutes de 5000 lojas online
(EBIT 2011)
Atraveacutes das milhares de lojas o consumidor passou a ter mais opccedilotildees in-
formaccedilotildees e ofertas do que nunca Ele pode optar por fazer suas compras em gran-
des redes lojas virtuais especializadas cataacutelogos virtuais dentre outros meios E eacute
bombardeado com mensagens por diversos canais televisatildeo Internet raacutedio redes
sociais miacutedia impressa etc (MCKENNA 1999)
No entanto devido agrave imensuraacutevel quantidade de anuacutencios disponiacuteveis a
tarefa de escolher o produto desejado pelo melhor preccedilo torna-se demasiadamente
12
custosa Como um exemplo simples suponha-se um consumidor que deseja adqui-
rir uma TV LCD ele deve selecionar uma quantidade finita de lojas que conhece
buscar o produto desejado em cada loja e por fim cruzar os dados obtidos a fim
de encontrar o melhor custo-benefiacutecio Embora tal tarefa possa parecer simploacute-
ria ela se torna cada vez mais complexa agrave medida que mais lojas satildeo incluiacutedas na
pesquisa
Serviccedilos de Shopping Comparison se propotildeem a resolver esse problema
atraveacutes de um serviccedilo online baseado na web os consumidores podem encontrar
produtos preccedilos e outras informaccedilotildees de muacuteltiplas lojas online ao inveacutes de visitar
cada uma separadamente Os preccedilos e produtos satildeo apresentados na mesma inter-
face e o consumidor pode tomar a melhor decisatildeo sendo entatildeo redirecionado para
o fornecedor do produto para completar a transaccedilatildeo (WAN 2009)
Para que tais dados sejam apresentados eacute necessaacuterio que um agente de pes-
quisa de preccedilos chamado de Shopbot automaticamente pesquise uma coleccedilatildeo de
lojas online para coletar e comparar dados de um produto especificado (ZHANG
JING 2011) Entretanto natildeo existe uma padronizaccedilatildeo para a exibiccedilatildeo dos dados
dos produtos cada loja possui seu proacuteprio layout organizaccedilatildeo estrutural tecnolo-
gias etc Portanto desenvolver um bom agente de comparaccedilatildeo (shopbot) capaz
de coletar dados de muacuteltiplas fontes se torna uma tarefa natildeo trivial
A tarefa de descobrimento e anaacutelise de informaccedilotildees uacuteteis da World Wide
Web atraveacutes da busca automaacutetica de informaccedilatildeo de recursos disponiacuteveis online eacute
a definiccedilatildeo de Web Mining (COOLEY MOBASHER SRIVASTAVA 1997) Sendo este
trabalho portanto pertencente a essa linha de pesquisa
13
12 Objetivos
Este trabalho elabora um conjunto de regras e procedimentos para a de-
tecccedilatildeo de padrotildees identificaccedilatildeo de atributos extraccedilatildeo de dados em lojas de e-
commerce e geraccedilatildeo de um modelo geneacuterico e reaproveitaacutevel para cada fonte de
dados
Objetiva-se mensurar a eficiecircncia do modelo proposto em extrair dados
de produtos atraveacutes da implementaccedilatildeo de um protoacutetipo de shopbot que aplica tais
regras e procedimentos em uma aplicaccedilatildeo de Shopping Comparison
13 Organizaccedilatildeo do Trabalho
Este trabalho estaacute organizado da seguinte maneira
bull Os capiacutetulos 2 3 e 4 constituem o Referencial Teoacuterico deste trabalho No
capiacutetulo 2 tem-se a apresentaccedilatildeo de conceitos de HTML No capiacutetulo 3 eacute
realizada uma apresentaccedilatildeo sobre conceitos de Web Mining focando-se em
Web Content Mining Por fim no capiacutetulo 4 eacute dada uma definiccedilatildeo de Shop-
ping Comparison e Shopbot aleacutem dos seus impactos no comeacutercio online
bull O capiacutetulo 5 descreve a Metodologia utilizada no trabalho definindo os pro-
cedimentos metodoloacutegicos e as tecnologias utilizadas
bull No capiacutetulo 6 satildeo apresentados com detalhes as regras e procedimentos utili-
zados na construccedilatildeo do protoacutetipo de shopbot proposto neste trabalho desde
a elaboraccedilatildeo do algoritmo ateacute a interface do serviccedilo de Shopping Compari-
son
bull O capiacutetulo 7 conteacutem os resultados obtidos e algumas discussotildees a respeito
do que foi atingido
14
2 Linguagem HTML
A World Wide Web eacute uma imensa rede de informaccedilotildees Segundo o World
Wide Web Consortium a principal organizaccedilatildeo de padrotildees para a Internet a Web se
baseia em trecircs mecanismos que tornam esses recursos disponiacuteveis para o puacuteblico
mais amplo possiacutevel (CONSORTIUM 1999)
1 Um esquema de nomenclatura uniforme para a localizaccedilatildeo de recursos pre-
sentes na Web Ex Universal Resource Identifier ou URI
2 Protocolos para acesso agrave recursos nomeados na Web Ex Hypertext Trans-
fer Protocol ou HTTP
3 Hypertext para a faacutecil navegaccedilatildeo entre esses recursos Ex HTML
HTML que eacute usado para navegar entre os recursos da Web eacute tratado na
seccedilatildeo seguinte
21 HTML
HyperText Markup Language (HTML) eacute a liacutengua franca para publicaccedilatildeo
de conteuacutedo na World Wide Web Eacute um formato natildeo-proprietaacuterio que pode ser cri-
ado e processado por uma ampla variedade de ferramentas desde simples editores
de texto agrave ferramentas mais complexas de autoraccedilatildeo HTML usa tags como ltpgt
e ltpgt para estruturar o texto em tiacutetulos paraacutegrafos listas blocos imagens links
para outros documentos etc (CONSORTIUM 2010)
Um breve coacutedigo ou documento HTML eacute exibido abaixo
ltDOCTYPE html PUBLIC -W3CDTD XHTML 10 StrictEN
httpwwww3orgTRxhtml1DTDxhtml1-strictdtdgt
lthtml xmlns=httpwwww3org1999xhtml xmllang=en lang=engt
15
lthead gt
lttitle gtTitulo da Pagina HTML lttitle gt
lthead gt
ltbody gt
ltdiv id=conteudo class=blocogt
lth1gtTitulo do Texto lth1gt
ltpgtParagrafo contendo textoltpgt
ltpgtSegundo paragrafo com mais textoltpgt
ltdivgt
ltdiv class=blocogt
ltpgtltstrong gtTexto em negritoltstrong gtltpgt
ltpgtltemgtTexto em italicoltemgtltpgt
ltdivgt
ltbody gt
lthtml gt
A interpretaccedilatildeo desse coacutedigo pelo browser Google Chrome eacute exibido na
FIGURA 1
Figura 1 Interpretaccedilatildeo de coacutedigo HTML pelo browser Google Chrome
16
Apesar do HTML possuir uma grande quantidade de tags para formataccedilatildeo
de documentos existe uma limitaccedilatildeo histoacuterica em seu projeto as tags usadas satildeo
semi-estruturadas elas apenas descrevem como a informaccedilatildeo deve ser exibida mas
natildeo do que se trata os dados (WAN 2009) Dessa forma natildeo eacute uma linguagem
semacircntica que pode ter sua informaccedilatildeo trivialmente extraiacuteda e interpretada por
agentes computacionais
22 Document Object Model
Document Object Model abreviadamente chamado de DOM eacute uma in-
terface de programaccedilatildeo de aplicaccedilotildees ou API para documentos HTML vaacutelidos e
XML corretamente formatados Ela define a estrutura loacutegica dos documentos e a
maneira como seratildeo acessados e manipulados Atraveacutes da DOM programadores
podem construir documentos navegar pela sua estrutura adicionar modificar ou
remover elementos e conteuacutedo (ROBIE et al 2000)
Como eacute uma especificaccedilatildeo do World Wide Web Consortium ou W3C o
objetivo da Document Object Model eacute fornecer uma API padratildeo que possa ser
usada por uma ampla variedade de linguagens de programaccedilatildeo
No DOM os documentos tem uma estrutura loacutegica que eacute muito parecida
com uma aacutervore mais precisamente uma ldquoflorestardquo que eacute um conjunto de aacutervo-
res Cada documento conteacutem zero ou um noacute de declaraccedilatildeo de tipo de documento
(DOCTYPE) um noacute raiz e zero ou mais instruccedilotildees de processamento e comentaacute-
rios O elemento raiz funciona como o noacute raiz da aacutervore do documento (ROBIE et
al 2000)
Como exemplo considere o coacutedigo HTML apresentado na seccedilatildeo anterior
A aacutervore DOM deste documento eacute apresentada na FIGURA 2 Atraveacutes da manipu-
laccedilatildeo desta aacutervore eacute possiacutevel adicionar novos elementos atraveacutes da simples adiccedilatildeo
17
de novos noacutes agrave estrutura remover elementos atraveacutes da remoccedilatildeo de noacutes e editar
conteuacutedo textuais ou estruturais seja alterando textos ou modificando noacutes
Figura 2 Reproduccedilatildeo de uma aacutervore DOM para um documento HTML
Eacute facilmente perceptiacutevel que a API DOM eacute de suma importacircncia na anaacutelise
de conteuacutedos provenientes da World Wide Web
23 Seletores CSS
Cascading Style Sheets (CSS) eacute uma linguagem de estilo utilizada para
descrever a apresentaccedilatildeo de paacuteginas Web incluindo cores layouts fonte etc (CON-
SORTIUM 2011) Para que os elementos possam ser estilizados existem regras de
correspondecircncia para determinar quais regras se aplicam a elementos da aacutervore
DOM (BOS et al 2011)
18
Um simples exemplo de um documento CSS eacute apresentado a seguir con-
tendo alguns seletores
font -size 12px
h1
color red
p
color black
O CSS acima especifica atraveacutes do uso do seletor ldquordquo que qualquer ele-
mento do documento no qual eacute aplicado deve ter o texto no tamanho de 12 pixels
todos os elementos do tipo ldquoh1rdquo teratildeo o texto da cor vermelha e os elementos do
tipo ldquoprdquo teratildeo a cor preta especificados atraveacutes do uso de seletores homocircnimos a
esses elementos Na Quadro 1 eacute apresentada a sintaxe de alguns seletores CSS da
especificaccedilatildeo 21
Eacute importante ressaltar que seletores CSS natildeo satildeo usados unicamente para
definir estilos para paacuteginas Web Eles tambeacutem satildeo usados na navegaccedilatildeo pela aacutervore
DOM para que atributos e conteuacutedos dos noacutes possam ser recuperados modificados
ou excluiacutedos de forma mais dinacircmica Por exemplo na aacutervore DOM exibida na
FIGURA 2 o seletor ldquoconteudordquo retornaria o noacute ldquoltdivgtrdquo mais agrave esquerda
24 HTML Parsers
Um HTML Parser eacute uma ferramenta que cria uma aacutervore DOM a partir
da anaacutelise de um coacutedigo HTML (NYEIN 2011) O analisador eacute capaz de detectar
e corrigir vaacuterios erros de sintaxe HTML em documentos mal formatados (YANG
ZHANG TSAI 2008)
19
Padratildeo Significado Corresponde a qualquer ele-
mentoE Corresponde a qualquer ele-
mento E (isto eacute um elemento dotipo E)
E F Corresponde a qualquer ele-mento F que eacute descendente deum elemento E
E gt F Corresponde a qualquer ele-mento F que eacute filho do elementoE
Efirst-child Corresponde agrave primeira ocorrecircn-cia do elemento E
Ewarning Corresponde a qualquer ele-mento do tipo E que possui aclasse ldquowarningrdquo
Emyid Corresponde a qualquer ele-mento E que possui o ID ldquomyidrdquo
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011)
Normalmente eacute disponibilizada uma interface para que a aacutervore DOM
possa ser navegada Alguns parsers permitem que essa funccedilatildeo seja realizada atra-
veacutes de seletores CSS aleacutem de prover meacutetodos que permitem manipular e recuperar
informaccedilotildees de noacutes
Neste trabalho eacute utilizado o analisador de HTML phpQuery Eacute uma fer-
ramenta server-side orientado a seletores CSS3 e com meacutetodos para recuperaccedilatildeo
e manipulaccedilatildeo do Document Object Model (CUDNIK 2009)
20
3 Web Mining
Textos viacutedeos imagens e sons satildeo publicados e compartilhados a todo
momento e em todas as partes do mundo atraveacutes da World Wide Web O acompa-
nhamento absorccedilatildeo e compreensatildeo dessa imensuraacutevel quantidade de informaccedilatildeo
eacute uma tarefa impraticaacutevel ainda que em um niacutevel micro Por isso o conceito de
Web Mining foi criado por pesquisadores
Web Mining derivado da expressatildeo Data Mining pode ser amplamente
definido como a descoberta e anaacutelise de informaccedilatildeo uacutetil da World Wide Web (COO-
LEY MOBASHER SRIVASTAVA 1997)
Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e Srivastava(1997) Juacutenior (2007)
Uma taxonomia da Web Mining eacute apresentado na FIGURA 3 Nos paragraacute-
fos seguintes tem-se uma breve explicaccedilatildeo sobre cada subtoacutepico nela apresentada
sem se estender ateacute os noacutes do terceiro niacutevel
21
Web Structure Mining (Mineraccedilatildeo da Estrutura da Web) se refere ao pro-
cesso de descoberta de conhecimento atraveacutes da relaccedilatildeo entre os documentos con-
tidos na Web
Web Usage Mining (Mineraccedilatildeo do Uso da Web) analisa o padratildeo de com-
portamento de usuaacuterios na Web Como exemplo simples pode ser citado a desco-
berta de padrotildees no acesso de usuaacuterios a um determinado site em um Web server
Por fim Web Content Mining eacute tratado no subcapiacutetulo seguinte
31 Web Content Mining
Web Content Mining (Mineraccedilatildeo do Conteuacutedo da Web) eacute o processo de
extraccedilatildeo de informaccedilatildeo do conteuacutedo de documentos e seus metadados (palavras-
chave informaccedilotildees sobre produtos imagens etc) Apesar deste enfoque abranger
principalmente documentos HTML ele se estende a formatos natildeo-textuais como
imagens e viacutedeos (SANTOS 2009) Segundo Cooley Mobasher e Srivastava (1997)
Web Content Mining pode ser dividido em trecircs abordagens explicadas a seguir
A primeira delas Agent Based Approach em portuguecircs Abordagem Base-
ada em Agentes pode ser dividida nas seguintes categorias
bull Intelligent Search Agents (Agentes Inteligentes de Busca) sistemas que bus-
cam por dados relevantes organizando e interpretando a informaccedilatildeo desco-
berta FAQ-Finder (HAMMOND et al 1995) e BargainFinder (WAN PENG
2010) satildeo dois exemplos claacutessicos dessa categoria
bull Information FilteringCategorization (FiltragemCategorizaccedilatildeo de Informa-
ccedilatildeo) agentes que usam uma variedade de teacutecnicas de recuperaccedilatildeo de infor-
maccedilatildeo e caracteriacutesticas de documentos da Web para automaticamente ob-
ter filtrar e organizar a informaccedilatildeo BO (Bookmark Organizer) (MAAREK
SHAUL 1996) eacute um exemplo desse tipo de aplicaccedilatildeo tendo em vista que
22
ele organiza coleccedilotildees de documentos da Web baseados na sua informaccedilatildeo
conceitual
bull Personalized Web Agents (Agentes Web Personalizados) satildeo agentes que
aprendem as preferecircncias do usuaacuterio e descobrem informaccedilotildees da Web ba-
seada nessas preferecircncas (COOLEY MOBASHER SRIVASTAVA 1997)
A segunda abordagem Database Approach (Abordagem de Database)
foca em teacutecnicas para organizaccedilatildeo da informaccedilatildeo semi-estruturada da Web em
dados mais estruturados usando mecanismos padrotildees de consulta agrave databases e
teacutecnicas de data mining para anaacutelise Pode ser dividido em duas categorias
bull Multilevel Databases (Databases Multiniacuteveis) a principal ideia dessa abor-
dagem eacute que o niacutevel mais baixo da database contenha informaccedilatildeo semi-
estruturada armazenada em vaacuterios repositoacuterios Web Nos niacuteveis mais altos
meta dados ou generalizaccedilotildees satildeo extraiacutedos dos niacuteveis mais baixos e orga-
nizados em coleccedilotildees estruturadas como databases relacionais orientadas a
objetos (COOLEY MOBASHER SRIVASTAVA 1997)
bull Web Query Systems (Sistemas de Consultas Web) sistemas que utilizam
padrotildees de consultas a databases ou a informaccedilotildees estruturais sobre docu-
mentos Web e ateacute processadores de linguagens naturais para processar as
consultas que satildeo realizadas nas buscas na Internet (COOLEY MOBASHER
SRIVASTAVA 1997)
Este trabalho estaacute situado na aacuterea de Web Content Mining especificamente
na Abordagem Baseada em Agentes na categoria de Agentes Inteligentes de Busca
visto que o conteuacutedo presente no HTML de paacuteginas de e-commerce seratildeo anali-
sados por um robocirc de busca inteligente que coletaraacute e organizaraacute a informaccedilatildeo
relevante
23
32 Wrapper
A World Wide Web natildeo eacute estruturada de forma a apresentar informaccedilotildees
que possam ser lidas por maacutequinas A maioria da imensuraacutevel quantidade de dados
presente na Web estaacute apresentada em estruturas fracamente semacircnticas que natildeo po-
dem ser compreendidas por agentes (DOORENBOS ETZIONI WELD 1997) Faz-se
necessaacuterio entatildeo uma regra de traduccedilatildeo para cada fonte de dados A esse ldquotradutorrdquo
eacute dado o nome de wrapper (KUSHMERICK 1997 COWIE LEHNERT 1996)
Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers Fonte Yanget al (2000)
Formalmente um wrapper eacute um programa agente ou conjunto de regras
que entende a informaccedilatildeo de uma fonte e a traduz em uma forma regular e compre-
ensiacutevel que pode ser usada por outros agentes Um wrapper eacute especializado apenas
em uma uacutenica fonte de informaccedilotildees (YANG et al 2000) A FIGURA 4 mostra um
sistema de integraccedilatildeo de informaccedilotildees usando vaacuterios wrappers cada um para uma
fonte especiacutefica de informaccedilatildeo
24
Segundo Firat (2003) wrappers podem ser divididos em trecircs tipos baseado
no seu niacutevel de automaccedilatildeo
bull Manual codificar manualmente um wrapper normalmente eacute uma tarefa
tediosa e em alguns casos impraticaacutevel O nuacutemero de fontes de dados pode
ser muito grande ou crescer rapidamente e a estrutura e o conteuacutedo da fonte
pode frequentemente mudar Todos esses fatores tornam essa tarefa manual
altamente custosa e demorada (TATBUL et al 2001)
bull Semi-automaacutetico (interativo) em alguns casos as regras de um wrap-
per que lida com os detalhes especiacuteficos de uma fonte de dados eacute relati-
vamente pequena A outra parte eacute igual em todos os wrappers ou pode ser
gerada semi-automaticamente baseada em uma descriccedilatildeo declarativa dada
pelo usuaacuterio (TATBUL et al 2001)
bull Automaacutetico a geraccedilatildeo automaacutetica de um wrapper significa que natildeo haacute
intervenccedilatildeo humana nesse processo Ferramentas de geraccedilatildeo automaacutetica
podem ser especiacuteficas pra um site ou geneacutericas normalmente necessitam de
um estaacutegio de treinamento e satildeo baseados em algoritmos de aprendizado
supervisionado (TATBUL et al 2001)
Neste trabalho o wrapper gerado seraacute um conjunto de seletores CSS que
especificam quais dados de paacuteginas Web devem ser extraiacutedos gerando informaccedilotildees
relevantes a partir de documentos semi-estruturados
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
ABSTRACT
The Shopping Comparison services has impacted the online commerceand offered valuable information for the consumer to make purchasing decisions
However extract the data from multiple vendors is a nontrivial task consi-dering that HTML documents are semi-structured and have a low semantic value
In this work is proposed a Shopping Comparison agent or Shopbot thatby detecting patterns in HTML documents can determine where are the productsand his attributes generating a reusable model able to translate the semi-structureddata into valuable information
The results show that the prototype developed is entirely viable and provedto be functional in most vendors analyzed
Keywords Shopping Comparison Shopbot Web Content Mining
LISTA DE FIGURAS
Figura 1 Interpretaccedilatildeo de coacutedigo HTML pelo browser Google Chrome 15Figura 2 Reproduccedilatildeo de uma aacutervore DOM para um documento HTML 17Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e
Srivastava (1997) Juacutenior (2007) 20Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers
Fonte Yang et al (2000) 23Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e
Peng (2010) 25Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte
Yang et al (2000) 27Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em
bilhotildees) Fonte ebit (2011) 29Figura 8 Arquitetura do shopbot proposto 36Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fonte
httpvinaytechwordpresscom20081124ajax-and-dom 40Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em
forma de lista 41Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em
forma de grade 42Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo
do algoritmo poacutes-ordem 43Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos
em um mesmo anuacutencio 55Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios
diferentes 57Figura 15 Interface inicial do protoacutetipo 59Figura 16 Interface do protoacutetipo exibindo resultados para a busca por
ldquogalaxy noterdquo 60
LISTA DE QUADROS
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011) 19Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do
protoacutetipo 32Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do
protoacutetipo 33Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como
entrada para o shopbot 38Quadro 5 Exemplos de termos de busca natildeo adequados 39Quadro 6 Exemplos de termos de busca adequados 39Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore
exemplificada na FIGURA 12 43Quadro 8 Resultado da remoccedilatildeo de ruiacutedos 45Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes 48Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade 49Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de
dados inicialmente estabelecido 62Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10
lojas 63Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados
inicialmente estabelecido 64Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas 65
SUMAacuteRIO
1 Introduccedilatildeo 1111 Contextualizaccedilatildeo e Motivaccedilatildeo 1112 Objetivos 1313 Organizaccedilatildeo do Trabalho 132 Linguagem HTML 1421 HTML 1422 Document Object Model 1623 Seletores CSS 1724 HTML Parsers 183 Web Mining 2031 Web Content Mining 2132 Wrapper 234 Shopping Comparison 2541 Serviccedilos de Shopping Comparison 2542 Shopbot 2643 Impactos no Comeacutercio Eletrocircnico 295 Metodologia 3251 Meacutetodos 32511 Entendimento do Problema 3352 Material 34521 PHP 34522 phpQuery 34523 Ambiente Computacional 356 Arquitetura do Shopbot proposto 3661 Determinaccedilatildeo dos Termos de Busca adequados 37611 Detecccedilatildeo de Padrotildees 37612 Submissatildeo da URL e Termos de Busca 37613 Anaacutelise do HTML e Conversatildeo em Document Object Model 4062 Eliminaccedilatildeo de Ruiacutedos 4163 Ordenaccedilatildeo dos Resultados 4564 Geraccedilatildeo do Wrapper 48641 Formato do Wrapper 50642 Definindo Seletores CSS para os Anuacutencios 51643 Extraccedilatildeo do Tiacutetulo do Produto 51644 Extraccedilatildeo do Link do Produto 52645 Extraccedilatildeo do Parcelamento do Produto 53646 Extraccedilatildeo do Preccedilo do Produto 54
647 Extraccedilatildeo da Imagem do Produto 5665 Implementaccedilatildeo do Protoacutetipo 58651 Interface do Protoacutetipo 587 Resultados e Discussatildeo 6171 Resultados da Detecccedilatildeo de Padrotildees 6172 Resultados da Geraccedilatildeo de Wrapper 638 Conclusotildees e Trabalhos Futuros 66REFEREcircNCIAS 68
11
1 Introduccedilatildeo
11 Contextualizaccedilatildeo e Motivaccedilatildeo
A Era Digital tem inserido novas e importantes regras que regem a so-
ciedade moderna e o atual panorama socioeconocircmico Globalizaccedilatildeo competi-
ccedilatildeo informaccedilatildeo em grandes quantidades mudanccedilas constantes em curto espaccedilo
de tempo variedades de opccedilotildees e vaacuterios outros termos e efeitos dessa Era tecircm
surgido ao longo do tempo
Com a evoluccedilatildeo das tecnologias e o advento da Internet o comeacutercio se
modificou atraveacutes do surgimento do comeacutercio online tambeacutem chamado de e-
commerce ou comeacutercio virtual O consumidor antes limitado por barreiras ge-
ograacuteficas passou a ter acesso a um maior conjunto de lojas produtos e serviccedilos
atraveacutes da web
Segundo dados da empresa e-bit o comeacutercio eletrocircnico brasileiro alcan-
ccedilou um faturamento de R$ 187 bilhotildees em 2011 Um aumento de 26 em relaccedilatildeo
ao ano anterior quando o faturamento foi de R$ 148 bilhotildees O nuacutemero de consu-
midores que compraram pela web ao menos uma vez eacute de 32 milhotildees e apenas no
ano de 2011 foram efetuados 537 milhotildees de pedidos atraveacutes de 5000 lojas online
(EBIT 2011)
Atraveacutes das milhares de lojas o consumidor passou a ter mais opccedilotildees in-
formaccedilotildees e ofertas do que nunca Ele pode optar por fazer suas compras em gran-
des redes lojas virtuais especializadas cataacutelogos virtuais dentre outros meios E eacute
bombardeado com mensagens por diversos canais televisatildeo Internet raacutedio redes
sociais miacutedia impressa etc (MCKENNA 1999)
No entanto devido agrave imensuraacutevel quantidade de anuacutencios disponiacuteveis a
tarefa de escolher o produto desejado pelo melhor preccedilo torna-se demasiadamente
12
custosa Como um exemplo simples suponha-se um consumidor que deseja adqui-
rir uma TV LCD ele deve selecionar uma quantidade finita de lojas que conhece
buscar o produto desejado em cada loja e por fim cruzar os dados obtidos a fim
de encontrar o melhor custo-benefiacutecio Embora tal tarefa possa parecer simploacute-
ria ela se torna cada vez mais complexa agrave medida que mais lojas satildeo incluiacutedas na
pesquisa
Serviccedilos de Shopping Comparison se propotildeem a resolver esse problema
atraveacutes de um serviccedilo online baseado na web os consumidores podem encontrar
produtos preccedilos e outras informaccedilotildees de muacuteltiplas lojas online ao inveacutes de visitar
cada uma separadamente Os preccedilos e produtos satildeo apresentados na mesma inter-
face e o consumidor pode tomar a melhor decisatildeo sendo entatildeo redirecionado para
o fornecedor do produto para completar a transaccedilatildeo (WAN 2009)
Para que tais dados sejam apresentados eacute necessaacuterio que um agente de pes-
quisa de preccedilos chamado de Shopbot automaticamente pesquise uma coleccedilatildeo de
lojas online para coletar e comparar dados de um produto especificado (ZHANG
JING 2011) Entretanto natildeo existe uma padronizaccedilatildeo para a exibiccedilatildeo dos dados
dos produtos cada loja possui seu proacuteprio layout organizaccedilatildeo estrutural tecnolo-
gias etc Portanto desenvolver um bom agente de comparaccedilatildeo (shopbot) capaz
de coletar dados de muacuteltiplas fontes se torna uma tarefa natildeo trivial
A tarefa de descobrimento e anaacutelise de informaccedilotildees uacuteteis da World Wide
Web atraveacutes da busca automaacutetica de informaccedilatildeo de recursos disponiacuteveis online eacute
a definiccedilatildeo de Web Mining (COOLEY MOBASHER SRIVASTAVA 1997) Sendo este
trabalho portanto pertencente a essa linha de pesquisa
13
12 Objetivos
Este trabalho elabora um conjunto de regras e procedimentos para a de-
tecccedilatildeo de padrotildees identificaccedilatildeo de atributos extraccedilatildeo de dados em lojas de e-
commerce e geraccedilatildeo de um modelo geneacuterico e reaproveitaacutevel para cada fonte de
dados
Objetiva-se mensurar a eficiecircncia do modelo proposto em extrair dados
de produtos atraveacutes da implementaccedilatildeo de um protoacutetipo de shopbot que aplica tais
regras e procedimentos em uma aplicaccedilatildeo de Shopping Comparison
13 Organizaccedilatildeo do Trabalho
Este trabalho estaacute organizado da seguinte maneira
bull Os capiacutetulos 2 3 e 4 constituem o Referencial Teoacuterico deste trabalho No
capiacutetulo 2 tem-se a apresentaccedilatildeo de conceitos de HTML No capiacutetulo 3 eacute
realizada uma apresentaccedilatildeo sobre conceitos de Web Mining focando-se em
Web Content Mining Por fim no capiacutetulo 4 eacute dada uma definiccedilatildeo de Shop-
ping Comparison e Shopbot aleacutem dos seus impactos no comeacutercio online
bull O capiacutetulo 5 descreve a Metodologia utilizada no trabalho definindo os pro-
cedimentos metodoloacutegicos e as tecnologias utilizadas
bull No capiacutetulo 6 satildeo apresentados com detalhes as regras e procedimentos utili-
zados na construccedilatildeo do protoacutetipo de shopbot proposto neste trabalho desde
a elaboraccedilatildeo do algoritmo ateacute a interface do serviccedilo de Shopping Compari-
son
bull O capiacutetulo 7 conteacutem os resultados obtidos e algumas discussotildees a respeito
do que foi atingido
14
2 Linguagem HTML
A World Wide Web eacute uma imensa rede de informaccedilotildees Segundo o World
Wide Web Consortium a principal organizaccedilatildeo de padrotildees para a Internet a Web se
baseia em trecircs mecanismos que tornam esses recursos disponiacuteveis para o puacuteblico
mais amplo possiacutevel (CONSORTIUM 1999)
1 Um esquema de nomenclatura uniforme para a localizaccedilatildeo de recursos pre-
sentes na Web Ex Universal Resource Identifier ou URI
2 Protocolos para acesso agrave recursos nomeados na Web Ex Hypertext Trans-
fer Protocol ou HTTP
3 Hypertext para a faacutecil navegaccedilatildeo entre esses recursos Ex HTML
HTML que eacute usado para navegar entre os recursos da Web eacute tratado na
seccedilatildeo seguinte
21 HTML
HyperText Markup Language (HTML) eacute a liacutengua franca para publicaccedilatildeo
de conteuacutedo na World Wide Web Eacute um formato natildeo-proprietaacuterio que pode ser cri-
ado e processado por uma ampla variedade de ferramentas desde simples editores
de texto agrave ferramentas mais complexas de autoraccedilatildeo HTML usa tags como ltpgt
e ltpgt para estruturar o texto em tiacutetulos paraacutegrafos listas blocos imagens links
para outros documentos etc (CONSORTIUM 2010)
Um breve coacutedigo ou documento HTML eacute exibido abaixo
ltDOCTYPE html PUBLIC -W3CDTD XHTML 10 StrictEN
httpwwww3orgTRxhtml1DTDxhtml1-strictdtdgt
lthtml xmlns=httpwwww3org1999xhtml xmllang=en lang=engt
15
lthead gt
lttitle gtTitulo da Pagina HTML lttitle gt
lthead gt
ltbody gt
ltdiv id=conteudo class=blocogt
lth1gtTitulo do Texto lth1gt
ltpgtParagrafo contendo textoltpgt
ltpgtSegundo paragrafo com mais textoltpgt
ltdivgt
ltdiv class=blocogt
ltpgtltstrong gtTexto em negritoltstrong gtltpgt
ltpgtltemgtTexto em italicoltemgtltpgt
ltdivgt
ltbody gt
lthtml gt
A interpretaccedilatildeo desse coacutedigo pelo browser Google Chrome eacute exibido na
FIGURA 1
Figura 1 Interpretaccedilatildeo de coacutedigo HTML pelo browser Google Chrome
16
Apesar do HTML possuir uma grande quantidade de tags para formataccedilatildeo
de documentos existe uma limitaccedilatildeo histoacuterica em seu projeto as tags usadas satildeo
semi-estruturadas elas apenas descrevem como a informaccedilatildeo deve ser exibida mas
natildeo do que se trata os dados (WAN 2009) Dessa forma natildeo eacute uma linguagem
semacircntica que pode ter sua informaccedilatildeo trivialmente extraiacuteda e interpretada por
agentes computacionais
22 Document Object Model
Document Object Model abreviadamente chamado de DOM eacute uma in-
terface de programaccedilatildeo de aplicaccedilotildees ou API para documentos HTML vaacutelidos e
XML corretamente formatados Ela define a estrutura loacutegica dos documentos e a
maneira como seratildeo acessados e manipulados Atraveacutes da DOM programadores
podem construir documentos navegar pela sua estrutura adicionar modificar ou
remover elementos e conteuacutedo (ROBIE et al 2000)
Como eacute uma especificaccedilatildeo do World Wide Web Consortium ou W3C o
objetivo da Document Object Model eacute fornecer uma API padratildeo que possa ser
usada por uma ampla variedade de linguagens de programaccedilatildeo
No DOM os documentos tem uma estrutura loacutegica que eacute muito parecida
com uma aacutervore mais precisamente uma ldquoflorestardquo que eacute um conjunto de aacutervo-
res Cada documento conteacutem zero ou um noacute de declaraccedilatildeo de tipo de documento
(DOCTYPE) um noacute raiz e zero ou mais instruccedilotildees de processamento e comentaacute-
rios O elemento raiz funciona como o noacute raiz da aacutervore do documento (ROBIE et
al 2000)
Como exemplo considere o coacutedigo HTML apresentado na seccedilatildeo anterior
A aacutervore DOM deste documento eacute apresentada na FIGURA 2 Atraveacutes da manipu-
laccedilatildeo desta aacutervore eacute possiacutevel adicionar novos elementos atraveacutes da simples adiccedilatildeo
17
de novos noacutes agrave estrutura remover elementos atraveacutes da remoccedilatildeo de noacutes e editar
conteuacutedo textuais ou estruturais seja alterando textos ou modificando noacutes
Figura 2 Reproduccedilatildeo de uma aacutervore DOM para um documento HTML
Eacute facilmente perceptiacutevel que a API DOM eacute de suma importacircncia na anaacutelise
de conteuacutedos provenientes da World Wide Web
23 Seletores CSS
Cascading Style Sheets (CSS) eacute uma linguagem de estilo utilizada para
descrever a apresentaccedilatildeo de paacuteginas Web incluindo cores layouts fonte etc (CON-
SORTIUM 2011) Para que os elementos possam ser estilizados existem regras de
correspondecircncia para determinar quais regras se aplicam a elementos da aacutervore
DOM (BOS et al 2011)
18
Um simples exemplo de um documento CSS eacute apresentado a seguir con-
tendo alguns seletores
font -size 12px
h1
color red
p
color black
O CSS acima especifica atraveacutes do uso do seletor ldquordquo que qualquer ele-
mento do documento no qual eacute aplicado deve ter o texto no tamanho de 12 pixels
todos os elementos do tipo ldquoh1rdquo teratildeo o texto da cor vermelha e os elementos do
tipo ldquoprdquo teratildeo a cor preta especificados atraveacutes do uso de seletores homocircnimos a
esses elementos Na Quadro 1 eacute apresentada a sintaxe de alguns seletores CSS da
especificaccedilatildeo 21
Eacute importante ressaltar que seletores CSS natildeo satildeo usados unicamente para
definir estilos para paacuteginas Web Eles tambeacutem satildeo usados na navegaccedilatildeo pela aacutervore
DOM para que atributos e conteuacutedos dos noacutes possam ser recuperados modificados
ou excluiacutedos de forma mais dinacircmica Por exemplo na aacutervore DOM exibida na
FIGURA 2 o seletor ldquoconteudordquo retornaria o noacute ldquoltdivgtrdquo mais agrave esquerda
24 HTML Parsers
Um HTML Parser eacute uma ferramenta que cria uma aacutervore DOM a partir
da anaacutelise de um coacutedigo HTML (NYEIN 2011) O analisador eacute capaz de detectar
e corrigir vaacuterios erros de sintaxe HTML em documentos mal formatados (YANG
ZHANG TSAI 2008)
19
Padratildeo Significado Corresponde a qualquer ele-
mentoE Corresponde a qualquer ele-
mento E (isto eacute um elemento dotipo E)
E F Corresponde a qualquer ele-mento F que eacute descendente deum elemento E
E gt F Corresponde a qualquer ele-mento F que eacute filho do elementoE
Efirst-child Corresponde agrave primeira ocorrecircn-cia do elemento E
Ewarning Corresponde a qualquer ele-mento do tipo E que possui aclasse ldquowarningrdquo
Emyid Corresponde a qualquer ele-mento E que possui o ID ldquomyidrdquo
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011)
Normalmente eacute disponibilizada uma interface para que a aacutervore DOM
possa ser navegada Alguns parsers permitem que essa funccedilatildeo seja realizada atra-
veacutes de seletores CSS aleacutem de prover meacutetodos que permitem manipular e recuperar
informaccedilotildees de noacutes
Neste trabalho eacute utilizado o analisador de HTML phpQuery Eacute uma fer-
ramenta server-side orientado a seletores CSS3 e com meacutetodos para recuperaccedilatildeo
e manipulaccedilatildeo do Document Object Model (CUDNIK 2009)
20
3 Web Mining
Textos viacutedeos imagens e sons satildeo publicados e compartilhados a todo
momento e em todas as partes do mundo atraveacutes da World Wide Web O acompa-
nhamento absorccedilatildeo e compreensatildeo dessa imensuraacutevel quantidade de informaccedilatildeo
eacute uma tarefa impraticaacutevel ainda que em um niacutevel micro Por isso o conceito de
Web Mining foi criado por pesquisadores
Web Mining derivado da expressatildeo Data Mining pode ser amplamente
definido como a descoberta e anaacutelise de informaccedilatildeo uacutetil da World Wide Web (COO-
LEY MOBASHER SRIVASTAVA 1997)
Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e Srivastava(1997) Juacutenior (2007)
Uma taxonomia da Web Mining eacute apresentado na FIGURA 3 Nos paragraacute-
fos seguintes tem-se uma breve explicaccedilatildeo sobre cada subtoacutepico nela apresentada
sem se estender ateacute os noacutes do terceiro niacutevel
21
Web Structure Mining (Mineraccedilatildeo da Estrutura da Web) se refere ao pro-
cesso de descoberta de conhecimento atraveacutes da relaccedilatildeo entre os documentos con-
tidos na Web
Web Usage Mining (Mineraccedilatildeo do Uso da Web) analisa o padratildeo de com-
portamento de usuaacuterios na Web Como exemplo simples pode ser citado a desco-
berta de padrotildees no acesso de usuaacuterios a um determinado site em um Web server
Por fim Web Content Mining eacute tratado no subcapiacutetulo seguinte
31 Web Content Mining
Web Content Mining (Mineraccedilatildeo do Conteuacutedo da Web) eacute o processo de
extraccedilatildeo de informaccedilatildeo do conteuacutedo de documentos e seus metadados (palavras-
chave informaccedilotildees sobre produtos imagens etc) Apesar deste enfoque abranger
principalmente documentos HTML ele se estende a formatos natildeo-textuais como
imagens e viacutedeos (SANTOS 2009) Segundo Cooley Mobasher e Srivastava (1997)
Web Content Mining pode ser dividido em trecircs abordagens explicadas a seguir
A primeira delas Agent Based Approach em portuguecircs Abordagem Base-
ada em Agentes pode ser dividida nas seguintes categorias
bull Intelligent Search Agents (Agentes Inteligentes de Busca) sistemas que bus-
cam por dados relevantes organizando e interpretando a informaccedilatildeo desco-
berta FAQ-Finder (HAMMOND et al 1995) e BargainFinder (WAN PENG
2010) satildeo dois exemplos claacutessicos dessa categoria
bull Information FilteringCategorization (FiltragemCategorizaccedilatildeo de Informa-
ccedilatildeo) agentes que usam uma variedade de teacutecnicas de recuperaccedilatildeo de infor-
maccedilatildeo e caracteriacutesticas de documentos da Web para automaticamente ob-
ter filtrar e organizar a informaccedilatildeo BO (Bookmark Organizer) (MAAREK
SHAUL 1996) eacute um exemplo desse tipo de aplicaccedilatildeo tendo em vista que
22
ele organiza coleccedilotildees de documentos da Web baseados na sua informaccedilatildeo
conceitual
bull Personalized Web Agents (Agentes Web Personalizados) satildeo agentes que
aprendem as preferecircncias do usuaacuterio e descobrem informaccedilotildees da Web ba-
seada nessas preferecircncas (COOLEY MOBASHER SRIVASTAVA 1997)
A segunda abordagem Database Approach (Abordagem de Database)
foca em teacutecnicas para organizaccedilatildeo da informaccedilatildeo semi-estruturada da Web em
dados mais estruturados usando mecanismos padrotildees de consulta agrave databases e
teacutecnicas de data mining para anaacutelise Pode ser dividido em duas categorias
bull Multilevel Databases (Databases Multiniacuteveis) a principal ideia dessa abor-
dagem eacute que o niacutevel mais baixo da database contenha informaccedilatildeo semi-
estruturada armazenada em vaacuterios repositoacuterios Web Nos niacuteveis mais altos
meta dados ou generalizaccedilotildees satildeo extraiacutedos dos niacuteveis mais baixos e orga-
nizados em coleccedilotildees estruturadas como databases relacionais orientadas a
objetos (COOLEY MOBASHER SRIVASTAVA 1997)
bull Web Query Systems (Sistemas de Consultas Web) sistemas que utilizam
padrotildees de consultas a databases ou a informaccedilotildees estruturais sobre docu-
mentos Web e ateacute processadores de linguagens naturais para processar as
consultas que satildeo realizadas nas buscas na Internet (COOLEY MOBASHER
SRIVASTAVA 1997)
Este trabalho estaacute situado na aacuterea de Web Content Mining especificamente
na Abordagem Baseada em Agentes na categoria de Agentes Inteligentes de Busca
visto que o conteuacutedo presente no HTML de paacuteginas de e-commerce seratildeo anali-
sados por um robocirc de busca inteligente que coletaraacute e organizaraacute a informaccedilatildeo
relevante
23
32 Wrapper
A World Wide Web natildeo eacute estruturada de forma a apresentar informaccedilotildees
que possam ser lidas por maacutequinas A maioria da imensuraacutevel quantidade de dados
presente na Web estaacute apresentada em estruturas fracamente semacircnticas que natildeo po-
dem ser compreendidas por agentes (DOORENBOS ETZIONI WELD 1997) Faz-se
necessaacuterio entatildeo uma regra de traduccedilatildeo para cada fonte de dados A esse ldquotradutorrdquo
eacute dado o nome de wrapper (KUSHMERICK 1997 COWIE LEHNERT 1996)
Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers Fonte Yanget al (2000)
Formalmente um wrapper eacute um programa agente ou conjunto de regras
que entende a informaccedilatildeo de uma fonte e a traduz em uma forma regular e compre-
ensiacutevel que pode ser usada por outros agentes Um wrapper eacute especializado apenas
em uma uacutenica fonte de informaccedilotildees (YANG et al 2000) A FIGURA 4 mostra um
sistema de integraccedilatildeo de informaccedilotildees usando vaacuterios wrappers cada um para uma
fonte especiacutefica de informaccedilatildeo
24
Segundo Firat (2003) wrappers podem ser divididos em trecircs tipos baseado
no seu niacutevel de automaccedilatildeo
bull Manual codificar manualmente um wrapper normalmente eacute uma tarefa
tediosa e em alguns casos impraticaacutevel O nuacutemero de fontes de dados pode
ser muito grande ou crescer rapidamente e a estrutura e o conteuacutedo da fonte
pode frequentemente mudar Todos esses fatores tornam essa tarefa manual
altamente custosa e demorada (TATBUL et al 2001)
bull Semi-automaacutetico (interativo) em alguns casos as regras de um wrap-
per que lida com os detalhes especiacuteficos de uma fonte de dados eacute relati-
vamente pequena A outra parte eacute igual em todos os wrappers ou pode ser
gerada semi-automaticamente baseada em uma descriccedilatildeo declarativa dada
pelo usuaacuterio (TATBUL et al 2001)
bull Automaacutetico a geraccedilatildeo automaacutetica de um wrapper significa que natildeo haacute
intervenccedilatildeo humana nesse processo Ferramentas de geraccedilatildeo automaacutetica
podem ser especiacuteficas pra um site ou geneacutericas normalmente necessitam de
um estaacutegio de treinamento e satildeo baseados em algoritmos de aprendizado
supervisionado (TATBUL et al 2001)
Neste trabalho o wrapper gerado seraacute um conjunto de seletores CSS que
especificam quais dados de paacuteginas Web devem ser extraiacutedos gerando informaccedilotildees
relevantes a partir de documentos semi-estruturados
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
LISTA DE FIGURAS
Figura 1 Interpretaccedilatildeo de coacutedigo HTML pelo browser Google Chrome 15Figura 2 Reproduccedilatildeo de uma aacutervore DOM para um documento HTML 17Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e
Srivastava (1997) Juacutenior (2007) 20Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers
Fonte Yang et al (2000) 23Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e
Peng (2010) 25Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte
Yang et al (2000) 27Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em
bilhotildees) Fonte ebit (2011) 29Figura 8 Arquitetura do shopbot proposto 36Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fonte
httpvinaytechwordpresscom20081124ajax-and-dom 40Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em
forma de lista 41Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em
forma de grade 42Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo
do algoritmo poacutes-ordem 43Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos
em um mesmo anuacutencio 55Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios
diferentes 57Figura 15 Interface inicial do protoacutetipo 59Figura 16 Interface do protoacutetipo exibindo resultados para a busca por
ldquogalaxy noterdquo 60
LISTA DE QUADROS
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011) 19Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do
protoacutetipo 32Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do
protoacutetipo 33Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como
entrada para o shopbot 38Quadro 5 Exemplos de termos de busca natildeo adequados 39Quadro 6 Exemplos de termos de busca adequados 39Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore
exemplificada na FIGURA 12 43Quadro 8 Resultado da remoccedilatildeo de ruiacutedos 45Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes 48Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade 49Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de
dados inicialmente estabelecido 62Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10
lojas 63Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados
inicialmente estabelecido 64Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas 65
SUMAacuteRIO
1 Introduccedilatildeo 1111 Contextualizaccedilatildeo e Motivaccedilatildeo 1112 Objetivos 1313 Organizaccedilatildeo do Trabalho 132 Linguagem HTML 1421 HTML 1422 Document Object Model 1623 Seletores CSS 1724 HTML Parsers 183 Web Mining 2031 Web Content Mining 2132 Wrapper 234 Shopping Comparison 2541 Serviccedilos de Shopping Comparison 2542 Shopbot 2643 Impactos no Comeacutercio Eletrocircnico 295 Metodologia 3251 Meacutetodos 32511 Entendimento do Problema 3352 Material 34521 PHP 34522 phpQuery 34523 Ambiente Computacional 356 Arquitetura do Shopbot proposto 3661 Determinaccedilatildeo dos Termos de Busca adequados 37611 Detecccedilatildeo de Padrotildees 37612 Submissatildeo da URL e Termos de Busca 37613 Anaacutelise do HTML e Conversatildeo em Document Object Model 4062 Eliminaccedilatildeo de Ruiacutedos 4163 Ordenaccedilatildeo dos Resultados 4564 Geraccedilatildeo do Wrapper 48641 Formato do Wrapper 50642 Definindo Seletores CSS para os Anuacutencios 51643 Extraccedilatildeo do Tiacutetulo do Produto 51644 Extraccedilatildeo do Link do Produto 52645 Extraccedilatildeo do Parcelamento do Produto 53646 Extraccedilatildeo do Preccedilo do Produto 54
647 Extraccedilatildeo da Imagem do Produto 5665 Implementaccedilatildeo do Protoacutetipo 58651 Interface do Protoacutetipo 587 Resultados e Discussatildeo 6171 Resultados da Detecccedilatildeo de Padrotildees 6172 Resultados da Geraccedilatildeo de Wrapper 638 Conclusotildees e Trabalhos Futuros 66REFEREcircNCIAS 68
11
1 Introduccedilatildeo
11 Contextualizaccedilatildeo e Motivaccedilatildeo
A Era Digital tem inserido novas e importantes regras que regem a so-
ciedade moderna e o atual panorama socioeconocircmico Globalizaccedilatildeo competi-
ccedilatildeo informaccedilatildeo em grandes quantidades mudanccedilas constantes em curto espaccedilo
de tempo variedades de opccedilotildees e vaacuterios outros termos e efeitos dessa Era tecircm
surgido ao longo do tempo
Com a evoluccedilatildeo das tecnologias e o advento da Internet o comeacutercio se
modificou atraveacutes do surgimento do comeacutercio online tambeacutem chamado de e-
commerce ou comeacutercio virtual O consumidor antes limitado por barreiras ge-
ograacuteficas passou a ter acesso a um maior conjunto de lojas produtos e serviccedilos
atraveacutes da web
Segundo dados da empresa e-bit o comeacutercio eletrocircnico brasileiro alcan-
ccedilou um faturamento de R$ 187 bilhotildees em 2011 Um aumento de 26 em relaccedilatildeo
ao ano anterior quando o faturamento foi de R$ 148 bilhotildees O nuacutemero de consu-
midores que compraram pela web ao menos uma vez eacute de 32 milhotildees e apenas no
ano de 2011 foram efetuados 537 milhotildees de pedidos atraveacutes de 5000 lojas online
(EBIT 2011)
Atraveacutes das milhares de lojas o consumidor passou a ter mais opccedilotildees in-
formaccedilotildees e ofertas do que nunca Ele pode optar por fazer suas compras em gran-
des redes lojas virtuais especializadas cataacutelogos virtuais dentre outros meios E eacute
bombardeado com mensagens por diversos canais televisatildeo Internet raacutedio redes
sociais miacutedia impressa etc (MCKENNA 1999)
No entanto devido agrave imensuraacutevel quantidade de anuacutencios disponiacuteveis a
tarefa de escolher o produto desejado pelo melhor preccedilo torna-se demasiadamente
12
custosa Como um exemplo simples suponha-se um consumidor que deseja adqui-
rir uma TV LCD ele deve selecionar uma quantidade finita de lojas que conhece
buscar o produto desejado em cada loja e por fim cruzar os dados obtidos a fim
de encontrar o melhor custo-benefiacutecio Embora tal tarefa possa parecer simploacute-
ria ela se torna cada vez mais complexa agrave medida que mais lojas satildeo incluiacutedas na
pesquisa
Serviccedilos de Shopping Comparison se propotildeem a resolver esse problema
atraveacutes de um serviccedilo online baseado na web os consumidores podem encontrar
produtos preccedilos e outras informaccedilotildees de muacuteltiplas lojas online ao inveacutes de visitar
cada uma separadamente Os preccedilos e produtos satildeo apresentados na mesma inter-
face e o consumidor pode tomar a melhor decisatildeo sendo entatildeo redirecionado para
o fornecedor do produto para completar a transaccedilatildeo (WAN 2009)
Para que tais dados sejam apresentados eacute necessaacuterio que um agente de pes-
quisa de preccedilos chamado de Shopbot automaticamente pesquise uma coleccedilatildeo de
lojas online para coletar e comparar dados de um produto especificado (ZHANG
JING 2011) Entretanto natildeo existe uma padronizaccedilatildeo para a exibiccedilatildeo dos dados
dos produtos cada loja possui seu proacuteprio layout organizaccedilatildeo estrutural tecnolo-
gias etc Portanto desenvolver um bom agente de comparaccedilatildeo (shopbot) capaz
de coletar dados de muacuteltiplas fontes se torna uma tarefa natildeo trivial
A tarefa de descobrimento e anaacutelise de informaccedilotildees uacuteteis da World Wide
Web atraveacutes da busca automaacutetica de informaccedilatildeo de recursos disponiacuteveis online eacute
a definiccedilatildeo de Web Mining (COOLEY MOBASHER SRIVASTAVA 1997) Sendo este
trabalho portanto pertencente a essa linha de pesquisa
13
12 Objetivos
Este trabalho elabora um conjunto de regras e procedimentos para a de-
tecccedilatildeo de padrotildees identificaccedilatildeo de atributos extraccedilatildeo de dados em lojas de e-
commerce e geraccedilatildeo de um modelo geneacuterico e reaproveitaacutevel para cada fonte de
dados
Objetiva-se mensurar a eficiecircncia do modelo proposto em extrair dados
de produtos atraveacutes da implementaccedilatildeo de um protoacutetipo de shopbot que aplica tais
regras e procedimentos em uma aplicaccedilatildeo de Shopping Comparison
13 Organizaccedilatildeo do Trabalho
Este trabalho estaacute organizado da seguinte maneira
bull Os capiacutetulos 2 3 e 4 constituem o Referencial Teoacuterico deste trabalho No
capiacutetulo 2 tem-se a apresentaccedilatildeo de conceitos de HTML No capiacutetulo 3 eacute
realizada uma apresentaccedilatildeo sobre conceitos de Web Mining focando-se em
Web Content Mining Por fim no capiacutetulo 4 eacute dada uma definiccedilatildeo de Shop-
ping Comparison e Shopbot aleacutem dos seus impactos no comeacutercio online
bull O capiacutetulo 5 descreve a Metodologia utilizada no trabalho definindo os pro-
cedimentos metodoloacutegicos e as tecnologias utilizadas
bull No capiacutetulo 6 satildeo apresentados com detalhes as regras e procedimentos utili-
zados na construccedilatildeo do protoacutetipo de shopbot proposto neste trabalho desde
a elaboraccedilatildeo do algoritmo ateacute a interface do serviccedilo de Shopping Compari-
son
bull O capiacutetulo 7 conteacutem os resultados obtidos e algumas discussotildees a respeito
do que foi atingido
14
2 Linguagem HTML
A World Wide Web eacute uma imensa rede de informaccedilotildees Segundo o World
Wide Web Consortium a principal organizaccedilatildeo de padrotildees para a Internet a Web se
baseia em trecircs mecanismos que tornam esses recursos disponiacuteveis para o puacuteblico
mais amplo possiacutevel (CONSORTIUM 1999)
1 Um esquema de nomenclatura uniforme para a localizaccedilatildeo de recursos pre-
sentes na Web Ex Universal Resource Identifier ou URI
2 Protocolos para acesso agrave recursos nomeados na Web Ex Hypertext Trans-
fer Protocol ou HTTP
3 Hypertext para a faacutecil navegaccedilatildeo entre esses recursos Ex HTML
HTML que eacute usado para navegar entre os recursos da Web eacute tratado na
seccedilatildeo seguinte
21 HTML
HyperText Markup Language (HTML) eacute a liacutengua franca para publicaccedilatildeo
de conteuacutedo na World Wide Web Eacute um formato natildeo-proprietaacuterio que pode ser cri-
ado e processado por uma ampla variedade de ferramentas desde simples editores
de texto agrave ferramentas mais complexas de autoraccedilatildeo HTML usa tags como ltpgt
e ltpgt para estruturar o texto em tiacutetulos paraacutegrafos listas blocos imagens links
para outros documentos etc (CONSORTIUM 2010)
Um breve coacutedigo ou documento HTML eacute exibido abaixo
ltDOCTYPE html PUBLIC -W3CDTD XHTML 10 StrictEN
httpwwww3orgTRxhtml1DTDxhtml1-strictdtdgt
lthtml xmlns=httpwwww3org1999xhtml xmllang=en lang=engt
15
lthead gt
lttitle gtTitulo da Pagina HTML lttitle gt
lthead gt
ltbody gt
ltdiv id=conteudo class=blocogt
lth1gtTitulo do Texto lth1gt
ltpgtParagrafo contendo textoltpgt
ltpgtSegundo paragrafo com mais textoltpgt
ltdivgt
ltdiv class=blocogt
ltpgtltstrong gtTexto em negritoltstrong gtltpgt
ltpgtltemgtTexto em italicoltemgtltpgt
ltdivgt
ltbody gt
lthtml gt
A interpretaccedilatildeo desse coacutedigo pelo browser Google Chrome eacute exibido na
FIGURA 1
Figura 1 Interpretaccedilatildeo de coacutedigo HTML pelo browser Google Chrome
16
Apesar do HTML possuir uma grande quantidade de tags para formataccedilatildeo
de documentos existe uma limitaccedilatildeo histoacuterica em seu projeto as tags usadas satildeo
semi-estruturadas elas apenas descrevem como a informaccedilatildeo deve ser exibida mas
natildeo do que se trata os dados (WAN 2009) Dessa forma natildeo eacute uma linguagem
semacircntica que pode ter sua informaccedilatildeo trivialmente extraiacuteda e interpretada por
agentes computacionais
22 Document Object Model
Document Object Model abreviadamente chamado de DOM eacute uma in-
terface de programaccedilatildeo de aplicaccedilotildees ou API para documentos HTML vaacutelidos e
XML corretamente formatados Ela define a estrutura loacutegica dos documentos e a
maneira como seratildeo acessados e manipulados Atraveacutes da DOM programadores
podem construir documentos navegar pela sua estrutura adicionar modificar ou
remover elementos e conteuacutedo (ROBIE et al 2000)
Como eacute uma especificaccedilatildeo do World Wide Web Consortium ou W3C o
objetivo da Document Object Model eacute fornecer uma API padratildeo que possa ser
usada por uma ampla variedade de linguagens de programaccedilatildeo
No DOM os documentos tem uma estrutura loacutegica que eacute muito parecida
com uma aacutervore mais precisamente uma ldquoflorestardquo que eacute um conjunto de aacutervo-
res Cada documento conteacutem zero ou um noacute de declaraccedilatildeo de tipo de documento
(DOCTYPE) um noacute raiz e zero ou mais instruccedilotildees de processamento e comentaacute-
rios O elemento raiz funciona como o noacute raiz da aacutervore do documento (ROBIE et
al 2000)
Como exemplo considere o coacutedigo HTML apresentado na seccedilatildeo anterior
A aacutervore DOM deste documento eacute apresentada na FIGURA 2 Atraveacutes da manipu-
laccedilatildeo desta aacutervore eacute possiacutevel adicionar novos elementos atraveacutes da simples adiccedilatildeo
17
de novos noacutes agrave estrutura remover elementos atraveacutes da remoccedilatildeo de noacutes e editar
conteuacutedo textuais ou estruturais seja alterando textos ou modificando noacutes
Figura 2 Reproduccedilatildeo de uma aacutervore DOM para um documento HTML
Eacute facilmente perceptiacutevel que a API DOM eacute de suma importacircncia na anaacutelise
de conteuacutedos provenientes da World Wide Web
23 Seletores CSS
Cascading Style Sheets (CSS) eacute uma linguagem de estilo utilizada para
descrever a apresentaccedilatildeo de paacuteginas Web incluindo cores layouts fonte etc (CON-
SORTIUM 2011) Para que os elementos possam ser estilizados existem regras de
correspondecircncia para determinar quais regras se aplicam a elementos da aacutervore
DOM (BOS et al 2011)
18
Um simples exemplo de um documento CSS eacute apresentado a seguir con-
tendo alguns seletores
font -size 12px
h1
color red
p
color black
O CSS acima especifica atraveacutes do uso do seletor ldquordquo que qualquer ele-
mento do documento no qual eacute aplicado deve ter o texto no tamanho de 12 pixels
todos os elementos do tipo ldquoh1rdquo teratildeo o texto da cor vermelha e os elementos do
tipo ldquoprdquo teratildeo a cor preta especificados atraveacutes do uso de seletores homocircnimos a
esses elementos Na Quadro 1 eacute apresentada a sintaxe de alguns seletores CSS da
especificaccedilatildeo 21
Eacute importante ressaltar que seletores CSS natildeo satildeo usados unicamente para
definir estilos para paacuteginas Web Eles tambeacutem satildeo usados na navegaccedilatildeo pela aacutervore
DOM para que atributos e conteuacutedos dos noacutes possam ser recuperados modificados
ou excluiacutedos de forma mais dinacircmica Por exemplo na aacutervore DOM exibida na
FIGURA 2 o seletor ldquoconteudordquo retornaria o noacute ldquoltdivgtrdquo mais agrave esquerda
24 HTML Parsers
Um HTML Parser eacute uma ferramenta que cria uma aacutervore DOM a partir
da anaacutelise de um coacutedigo HTML (NYEIN 2011) O analisador eacute capaz de detectar
e corrigir vaacuterios erros de sintaxe HTML em documentos mal formatados (YANG
ZHANG TSAI 2008)
19
Padratildeo Significado Corresponde a qualquer ele-
mentoE Corresponde a qualquer ele-
mento E (isto eacute um elemento dotipo E)
E F Corresponde a qualquer ele-mento F que eacute descendente deum elemento E
E gt F Corresponde a qualquer ele-mento F que eacute filho do elementoE
Efirst-child Corresponde agrave primeira ocorrecircn-cia do elemento E
Ewarning Corresponde a qualquer ele-mento do tipo E que possui aclasse ldquowarningrdquo
Emyid Corresponde a qualquer ele-mento E que possui o ID ldquomyidrdquo
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011)
Normalmente eacute disponibilizada uma interface para que a aacutervore DOM
possa ser navegada Alguns parsers permitem que essa funccedilatildeo seja realizada atra-
veacutes de seletores CSS aleacutem de prover meacutetodos que permitem manipular e recuperar
informaccedilotildees de noacutes
Neste trabalho eacute utilizado o analisador de HTML phpQuery Eacute uma fer-
ramenta server-side orientado a seletores CSS3 e com meacutetodos para recuperaccedilatildeo
e manipulaccedilatildeo do Document Object Model (CUDNIK 2009)
20
3 Web Mining
Textos viacutedeos imagens e sons satildeo publicados e compartilhados a todo
momento e em todas as partes do mundo atraveacutes da World Wide Web O acompa-
nhamento absorccedilatildeo e compreensatildeo dessa imensuraacutevel quantidade de informaccedilatildeo
eacute uma tarefa impraticaacutevel ainda que em um niacutevel micro Por isso o conceito de
Web Mining foi criado por pesquisadores
Web Mining derivado da expressatildeo Data Mining pode ser amplamente
definido como a descoberta e anaacutelise de informaccedilatildeo uacutetil da World Wide Web (COO-
LEY MOBASHER SRIVASTAVA 1997)
Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e Srivastava(1997) Juacutenior (2007)
Uma taxonomia da Web Mining eacute apresentado na FIGURA 3 Nos paragraacute-
fos seguintes tem-se uma breve explicaccedilatildeo sobre cada subtoacutepico nela apresentada
sem se estender ateacute os noacutes do terceiro niacutevel
21
Web Structure Mining (Mineraccedilatildeo da Estrutura da Web) se refere ao pro-
cesso de descoberta de conhecimento atraveacutes da relaccedilatildeo entre os documentos con-
tidos na Web
Web Usage Mining (Mineraccedilatildeo do Uso da Web) analisa o padratildeo de com-
portamento de usuaacuterios na Web Como exemplo simples pode ser citado a desco-
berta de padrotildees no acesso de usuaacuterios a um determinado site em um Web server
Por fim Web Content Mining eacute tratado no subcapiacutetulo seguinte
31 Web Content Mining
Web Content Mining (Mineraccedilatildeo do Conteuacutedo da Web) eacute o processo de
extraccedilatildeo de informaccedilatildeo do conteuacutedo de documentos e seus metadados (palavras-
chave informaccedilotildees sobre produtos imagens etc) Apesar deste enfoque abranger
principalmente documentos HTML ele se estende a formatos natildeo-textuais como
imagens e viacutedeos (SANTOS 2009) Segundo Cooley Mobasher e Srivastava (1997)
Web Content Mining pode ser dividido em trecircs abordagens explicadas a seguir
A primeira delas Agent Based Approach em portuguecircs Abordagem Base-
ada em Agentes pode ser dividida nas seguintes categorias
bull Intelligent Search Agents (Agentes Inteligentes de Busca) sistemas que bus-
cam por dados relevantes organizando e interpretando a informaccedilatildeo desco-
berta FAQ-Finder (HAMMOND et al 1995) e BargainFinder (WAN PENG
2010) satildeo dois exemplos claacutessicos dessa categoria
bull Information FilteringCategorization (FiltragemCategorizaccedilatildeo de Informa-
ccedilatildeo) agentes que usam uma variedade de teacutecnicas de recuperaccedilatildeo de infor-
maccedilatildeo e caracteriacutesticas de documentos da Web para automaticamente ob-
ter filtrar e organizar a informaccedilatildeo BO (Bookmark Organizer) (MAAREK
SHAUL 1996) eacute um exemplo desse tipo de aplicaccedilatildeo tendo em vista que
22
ele organiza coleccedilotildees de documentos da Web baseados na sua informaccedilatildeo
conceitual
bull Personalized Web Agents (Agentes Web Personalizados) satildeo agentes que
aprendem as preferecircncias do usuaacuterio e descobrem informaccedilotildees da Web ba-
seada nessas preferecircncas (COOLEY MOBASHER SRIVASTAVA 1997)
A segunda abordagem Database Approach (Abordagem de Database)
foca em teacutecnicas para organizaccedilatildeo da informaccedilatildeo semi-estruturada da Web em
dados mais estruturados usando mecanismos padrotildees de consulta agrave databases e
teacutecnicas de data mining para anaacutelise Pode ser dividido em duas categorias
bull Multilevel Databases (Databases Multiniacuteveis) a principal ideia dessa abor-
dagem eacute que o niacutevel mais baixo da database contenha informaccedilatildeo semi-
estruturada armazenada em vaacuterios repositoacuterios Web Nos niacuteveis mais altos
meta dados ou generalizaccedilotildees satildeo extraiacutedos dos niacuteveis mais baixos e orga-
nizados em coleccedilotildees estruturadas como databases relacionais orientadas a
objetos (COOLEY MOBASHER SRIVASTAVA 1997)
bull Web Query Systems (Sistemas de Consultas Web) sistemas que utilizam
padrotildees de consultas a databases ou a informaccedilotildees estruturais sobre docu-
mentos Web e ateacute processadores de linguagens naturais para processar as
consultas que satildeo realizadas nas buscas na Internet (COOLEY MOBASHER
SRIVASTAVA 1997)
Este trabalho estaacute situado na aacuterea de Web Content Mining especificamente
na Abordagem Baseada em Agentes na categoria de Agentes Inteligentes de Busca
visto que o conteuacutedo presente no HTML de paacuteginas de e-commerce seratildeo anali-
sados por um robocirc de busca inteligente que coletaraacute e organizaraacute a informaccedilatildeo
relevante
23
32 Wrapper
A World Wide Web natildeo eacute estruturada de forma a apresentar informaccedilotildees
que possam ser lidas por maacutequinas A maioria da imensuraacutevel quantidade de dados
presente na Web estaacute apresentada em estruturas fracamente semacircnticas que natildeo po-
dem ser compreendidas por agentes (DOORENBOS ETZIONI WELD 1997) Faz-se
necessaacuterio entatildeo uma regra de traduccedilatildeo para cada fonte de dados A esse ldquotradutorrdquo
eacute dado o nome de wrapper (KUSHMERICK 1997 COWIE LEHNERT 1996)
Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers Fonte Yanget al (2000)
Formalmente um wrapper eacute um programa agente ou conjunto de regras
que entende a informaccedilatildeo de uma fonte e a traduz em uma forma regular e compre-
ensiacutevel que pode ser usada por outros agentes Um wrapper eacute especializado apenas
em uma uacutenica fonte de informaccedilotildees (YANG et al 2000) A FIGURA 4 mostra um
sistema de integraccedilatildeo de informaccedilotildees usando vaacuterios wrappers cada um para uma
fonte especiacutefica de informaccedilatildeo
24
Segundo Firat (2003) wrappers podem ser divididos em trecircs tipos baseado
no seu niacutevel de automaccedilatildeo
bull Manual codificar manualmente um wrapper normalmente eacute uma tarefa
tediosa e em alguns casos impraticaacutevel O nuacutemero de fontes de dados pode
ser muito grande ou crescer rapidamente e a estrutura e o conteuacutedo da fonte
pode frequentemente mudar Todos esses fatores tornam essa tarefa manual
altamente custosa e demorada (TATBUL et al 2001)
bull Semi-automaacutetico (interativo) em alguns casos as regras de um wrap-
per que lida com os detalhes especiacuteficos de uma fonte de dados eacute relati-
vamente pequena A outra parte eacute igual em todos os wrappers ou pode ser
gerada semi-automaticamente baseada em uma descriccedilatildeo declarativa dada
pelo usuaacuterio (TATBUL et al 2001)
bull Automaacutetico a geraccedilatildeo automaacutetica de um wrapper significa que natildeo haacute
intervenccedilatildeo humana nesse processo Ferramentas de geraccedilatildeo automaacutetica
podem ser especiacuteficas pra um site ou geneacutericas normalmente necessitam de
um estaacutegio de treinamento e satildeo baseados em algoritmos de aprendizado
supervisionado (TATBUL et al 2001)
Neste trabalho o wrapper gerado seraacute um conjunto de seletores CSS que
especificam quais dados de paacuteginas Web devem ser extraiacutedos gerando informaccedilotildees
relevantes a partir de documentos semi-estruturados
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
LISTA DE QUADROS
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011) 19Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do
protoacutetipo 32Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do
protoacutetipo 33Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como
entrada para o shopbot 38Quadro 5 Exemplos de termos de busca natildeo adequados 39Quadro 6 Exemplos de termos de busca adequados 39Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore
exemplificada na FIGURA 12 43Quadro 8 Resultado da remoccedilatildeo de ruiacutedos 45Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes 48Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade 49Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de
dados inicialmente estabelecido 62Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10
lojas 63Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados
inicialmente estabelecido 64Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas 65
SUMAacuteRIO
1 Introduccedilatildeo 1111 Contextualizaccedilatildeo e Motivaccedilatildeo 1112 Objetivos 1313 Organizaccedilatildeo do Trabalho 132 Linguagem HTML 1421 HTML 1422 Document Object Model 1623 Seletores CSS 1724 HTML Parsers 183 Web Mining 2031 Web Content Mining 2132 Wrapper 234 Shopping Comparison 2541 Serviccedilos de Shopping Comparison 2542 Shopbot 2643 Impactos no Comeacutercio Eletrocircnico 295 Metodologia 3251 Meacutetodos 32511 Entendimento do Problema 3352 Material 34521 PHP 34522 phpQuery 34523 Ambiente Computacional 356 Arquitetura do Shopbot proposto 3661 Determinaccedilatildeo dos Termos de Busca adequados 37611 Detecccedilatildeo de Padrotildees 37612 Submissatildeo da URL e Termos de Busca 37613 Anaacutelise do HTML e Conversatildeo em Document Object Model 4062 Eliminaccedilatildeo de Ruiacutedos 4163 Ordenaccedilatildeo dos Resultados 4564 Geraccedilatildeo do Wrapper 48641 Formato do Wrapper 50642 Definindo Seletores CSS para os Anuacutencios 51643 Extraccedilatildeo do Tiacutetulo do Produto 51644 Extraccedilatildeo do Link do Produto 52645 Extraccedilatildeo do Parcelamento do Produto 53646 Extraccedilatildeo do Preccedilo do Produto 54
647 Extraccedilatildeo da Imagem do Produto 5665 Implementaccedilatildeo do Protoacutetipo 58651 Interface do Protoacutetipo 587 Resultados e Discussatildeo 6171 Resultados da Detecccedilatildeo de Padrotildees 6172 Resultados da Geraccedilatildeo de Wrapper 638 Conclusotildees e Trabalhos Futuros 66REFEREcircNCIAS 68
11
1 Introduccedilatildeo
11 Contextualizaccedilatildeo e Motivaccedilatildeo
A Era Digital tem inserido novas e importantes regras que regem a so-
ciedade moderna e o atual panorama socioeconocircmico Globalizaccedilatildeo competi-
ccedilatildeo informaccedilatildeo em grandes quantidades mudanccedilas constantes em curto espaccedilo
de tempo variedades de opccedilotildees e vaacuterios outros termos e efeitos dessa Era tecircm
surgido ao longo do tempo
Com a evoluccedilatildeo das tecnologias e o advento da Internet o comeacutercio se
modificou atraveacutes do surgimento do comeacutercio online tambeacutem chamado de e-
commerce ou comeacutercio virtual O consumidor antes limitado por barreiras ge-
ograacuteficas passou a ter acesso a um maior conjunto de lojas produtos e serviccedilos
atraveacutes da web
Segundo dados da empresa e-bit o comeacutercio eletrocircnico brasileiro alcan-
ccedilou um faturamento de R$ 187 bilhotildees em 2011 Um aumento de 26 em relaccedilatildeo
ao ano anterior quando o faturamento foi de R$ 148 bilhotildees O nuacutemero de consu-
midores que compraram pela web ao menos uma vez eacute de 32 milhotildees e apenas no
ano de 2011 foram efetuados 537 milhotildees de pedidos atraveacutes de 5000 lojas online
(EBIT 2011)
Atraveacutes das milhares de lojas o consumidor passou a ter mais opccedilotildees in-
formaccedilotildees e ofertas do que nunca Ele pode optar por fazer suas compras em gran-
des redes lojas virtuais especializadas cataacutelogos virtuais dentre outros meios E eacute
bombardeado com mensagens por diversos canais televisatildeo Internet raacutedio redes
sociais miacutedia impressa etc (MCKENNA 1999)
No entanto devido agrave imensuraacutevel quantidade de anuacutencios disponiacuteveis a
tarefa de escolher o produto desejado pelo melhor preccedilo torna-se demasiadamente
12
custosa Como um exemplo simples suponha-se um consumidor que deseja adqui-
rir uma TV LCD ele deve selecionar uma quantidade finita de lojas que conhece
buscar o produto desejado em cada loja e por fim cruzar os dados obtidos a fim
de encontrar o melhor custo-benefiacutecio Embora tal tarefa possa parecer simploacute-
ria ela se torna cada vez mais complexa agrave medida que mais lojas satildeo incluiacutedas na
pesquisa
Serviccedilos de Shopping Comparison se propotildeem a resolver esse problema
atraveacutes de um serviccedilo online baseado na web os consumidores podem encontrar
produtos preccedilos e outras informaccedilotildees de muacuteltiplas lojas online ao inveacutes de visitar
cada uma separadamente Os preccedilos e produtos satildeo apresentados na mesma inter-
face e o consumidor pode tomar a melhor decisatildeo sendo entatildeo redirecionado para
o fornecedor do produto para completar a transaccedilatildeo (WAN 2009)
Para que tais dados sejam apresentados eacute necessaacuterio que um agente de pes-
quisa de preccedilos chamado de Shopbot automaticamente pesquise uma coleccedilatildeo de
lojas online para coletar e comparar dados de um produto especificado (ZHANG
JING 2011) Entretanto natildeo existe uma padronizaccedilatildeo para a exibiccedilatildeo dos dados
dos produtos cada loja possui seu proacuteprio layout organizaccedilatildeo estrutural tecnolo-
gias etc Portanto desenvolver um bom agente de comparaccedilatildeo (shopbot) capaz
de coletar dados de muacuteltiplas fontes se torna uma tarefa natildeo trivial
A tarefa de descobrimento e anaacutelise de informaccedilotildees uacuteteis da World Wide
Web atraveacutes da busca automaacutetica de informaccedilatildeo de recursos disponiacuteveis online eacute
a definiccedilatildeo de Web Mining (COOLEY MOBASHER SRIVASTAVA 1997) Sendo este
trabalho portanto pertencente a essa linha de pesquisa
13
12 Objetivos
Este trabalho elabora um conjunto de regras e procedimentos para a de-
tecccedilatildeo de padrotildees identificaccedilatildeo de atributos extraccedilatildeo de dados em lojas de e-
commerce e geraccedilatildeo de um modelo geneacuterico e reaproveitaacutevel para cada fonte de
dados
Objetiva-se mensurar a eficiecircncia do modelo proposto em extrair dados
de produtos atraveacutes da implementaccedilatildeo de um protoacutetipo de shopbot que aplica tais
regras e procedimentos em uma aplicaccedilatildeo de Shopping Comparison
13 Organizaccedilatildeo do Trabalho
Este trabalho estaacute organizado da seguinte maneira
bull Os capiacutetulos 2 3 e 4 constituem o Referencial Teoacuterico deste trabalho No
capiacutetulo 2 tem-se a apresentaccedilatildeo de conceitos de HTML No capiacutetulo 3 eacute
realizada uma apresentaccedilatildeo sobre conceitos de Web Mining focando-se em
Web Content Mining Por fim no capiacutetulo 4 eacute dada uma definiccedilatildeo de Shop-
ping Comparison e Shopbot aleacutem dos seus impactos no comeacutercio online
bull O capiacutetulo 5 descreve a Metodologia utilizada no trabalho definindo os pro-
cedimentos metodoloacutegicos e as tecnologias utilizadas
bull No capiacutetulo 6 satildeo apresentados com detalhes as regras e procedimentos utili-
zados na construccedilatildeo do protoacutetipo de shopbot proposto neste trabalho desde
a elaboraccedilatildeo do algoritmo ateacute a interface do serviccedilo de Shopping Compari-
son
bull O capiacutetulo 7 conteacutem os resultados obtidos e algumas discussotildees a respeito
do que foi atingido
14
2 Linguagem HTML
A World Wide Web eacute uma imensa rede de informaccedilotildees Segundo o World
Wide Web Consortium a principal organizaccedilatildeo de padrotildees para a Internet a Web se
baseia em trecircs mecanismos que tornam esses recursos disponiacuteveis para o puacuteblico
mais amplo possiacutevel (CONSORTIUM 1999)
1 Um esquema de nomenclatura uniforme para a localizaccedilatildeo de recursos pre-
sentes na Web Ex Universal Resource Identifier ou URI
2 Protocolos para acesso agrave recursos nomeados na Web Ex Hypertext Trans-
fer Protocol ou HTTP
3 Hypertext para a faacutecil navegaccedilatildeo entre esses recursos Ex HTML
HTML que eacute usado para navegar entre os recursos da Web eacute tratado na
seccedilatildeo seguinte
21 HTML
HyperText Markup Language (HTML) eacute a liacutengua franca para publicaccedilatildeo
de conteuacutedo na World Wide Web Eacute um formato natildeo-proprietaacuterio que pode ser cri-
ado e processado por uma ampla variedade de ferramentas desde simples editores
de texto agrave ferramentas mais complexas de autoraccedilatildeo HTML usa tags como ltpgt
e ltpgt para estruturar o texto em tiacutetulos paraacutegrafos listas blocos imagens links
para outros documentos etc (CONSORTIUM 2010)
Um breve coacutedigo ou documento HTML eacute exibido abaixo
ltDOCTYPE html PUBLIC -W3CDTD XHTML 10 StrictEN
httpwwww3orgTRxhtml1DTDxhtml1-strictdtdgt
lthtml xmlns=httpwwww3org1999xhtml xmllang=en lang=engt
15
lthead gt
lttitle gtTitulo da Pagina HTML lttitle gt
lthead gt
ltbody gt
ltdiv id=conteudo class=blocogt
lth1gtTitulo do Texto lth1gt
ltpgtParagrafo contendo textoltpgt
ltpgtSegundo paragrafo com mais textoltpgt
ltdivgt
ltdiv class=blocogt
ltpgtltstrong gtTexto em negritoltstrong gtltpgt
ltpgtltemgtTexto em italicoltemgtltpgt
ltdivgt
ltbody gt
lthtml gt
A interpretaccedilatildeo desse coacutedigo pelo browser Google Chrome eacute exibido na
FIGURA 1
Figura 1 Interpretaccedilatildeo de coacutedigo HTML pelo browser Google Chrome
16
Apesar do HTML possuir uma grande quantidade de tags para formataccedilatildeo
de documentos existe uma limitaccedilatildeo histoacuterica em seu projeto as tags usadas satildeo
semi-estruturadas elas apenas descrevem como a informaccedilatildeo deve ser exibida mas
natildeo do que se trata os dados (WAN 2009) Dessa forma natildeo eacute uma linguagem
semacircntica que pode ter sua informaccedilatildeo trivialmente extraiacuteda e interpretada por
agentes computacionais
22 Document Object Model
Document Object Model abreviadamente chamado de DOM eacute uma in-
terface de programaccedilatildeo de aplicaccedilotildees ou API para documentos HTML vaacutelidos e
XML corretamente formatados Ela define a estrutura loacutegica dos documentos e a
maneira como seratildeo acessados e manipulados Atraveacutes da DOM programadores
podem construir documentos navegar pela sua estrutura adicionar modificar ou
remover elementos e conteuacutedo (ROBIE et al 2000)
Como eacute uma especificaccedilatildeo do World Wide Web Consortium ou W3C o
objetivo da Document Object Model eacute fornecer uma API padratildeo que possa ser
usada por uma ampla variedade de linguagens de programaccedilatildeo
No DOM os documentos tem uma estrutura loacutegica que eacute muito parecida
com uma aacutervore mais precisamente uma ldquoflorestardquo que eacute um conjunto de aacutervo-
res Cada documento conteacutem zero ou um noacute de declaraccedilatildeo de tipo de documento
(DOCTYPE) um noacute raiz e zero ou mais instruccedilotildees de processamento e comentaacute-
rios O elemento raiz funciona como o noacute raiz da aacutervore do documento (ROBIE et
al 2000)
Como exemplo considere o coacutedigo HTML apresentado na seccedilatildeo anterior
A aacutervore DOM deste documento eacute apresentada na FIGURA 2 Atraveacutes da manipu-
laccedilatildeo desta aacutervore eacute possiacutevel adicionar novos elementos atraveacutes da simples adiccedilatildeo
17
de novos noacutes agrave estrutura remover elementos atraveacutes da remoccedilatildeo de noacutes e editar
conteuacutedo textuais ou estruturais seja alterando textos ou modificando noacutes
Figura 2 Reproduccedilatildeo de uma aacutervore DOM para um documento HTML
Eacute facilmente perceptiacutevel que a API DOM eacute de suma importacircncia na anaacutelise
de conteuacutedos provenientes da World Wide Web
23 Seletores CSS
Cascading Style Sheets (CSS) eacute uma linguagem de estilo utilizada para
descrever a apresentaccedilatildeo de paacuteginas Web incluindo cores layouts fonte etc (CON-
SORTIUM 2011) Para que os elementos possam ser estilizados existem regras de
correspondecircncia para determinar quais regras se aplicam a elementos da aacutervore
DOM (BOS et al 2011)
18
Um simples exemplo de um documento CSS eacute apresentado a seguir con-
tendo alguns seletores
font -size 12px
h1
color red
p
color black
O CSS acima especifica atraveacutes do uso do seletor ldquordquo que qualquer ele-
mento do documento no qual eacute aplicado deve ter o texto no tamanho de 12 pixels
todos os elementos do tipo ldquoh1rdquo teratildeo o texto da cor vermelha e os elementos do
tipo ldquoprdquo teratildeo a cor preta especificados atraveacutes do uso de seletores homocircnimos a
esses elementos Na Quadro 1 eacute apresentada a sintaxe de alguns seletores CSS da
especificaccedilatildeo 21
Eacute importante ressaltar que seletores CSS natildeo satildeo usados unicamente para
definir estilos para paacuteginas Web Eles tambeacutem satildeo usados na navegaccedilatildeo pela aacutervore
DOM para que atributos e conteuacutedos dos noacutes possam ser recuperados modificados
ou excluiacutedos de forma mais dinacircmica Por exemplo na aacutervore DOM exibida na
FIGURA 2 o seletor ldquoconteudordquo retornaria o noacute ldquoltdivgtrdquo mais agrave esquerda
24 HTML Parsers
Um HTML Parser eacute uma ferramenta que cria uma aacutervore DOM a partir
da anaacutelise de um coacutedigo HTML (NYEIN 2011) O analisador eacute capaz de detectar
e corrigir vaacuterios erros de sintaxe HTML em documentos mal formatados (YANG
ZHANG TSAI 2008)
19
Padratildeo Significado Corresponde a qualquer ele-
mentoE Corresponde a qualquer ele-
mento E (isto eacute um elemento dotipo E)
E F Corresponde a qualquer ele-mento F que eacute descendente deum elemento E
E gt F Corresponde a qualquer ele-mento F que eacute filho do elementoE
Efirst-child Corresponde agrave primeira ocorrecircn-cia do elemento E
Ewarning Corresponde a qualquer ele-mento do tipo E que possui aclasse ldquowarningrdquo
Emyid Corresponde a qualquer ele-mento E que possui o ID ldquomyidrdquo
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011)
Normalmente eacute disponibilizada uma interface para que a aacutervore DOM
possa ser navegada Alguns parsers permitem que essa funccedilatildeo seja realizada atra-
veacutes de seletores CSS aleacutem de prover meacutetodos que permitem manipular e recuperar
informaccedilotildees de noacutes
Neste trabalho eacute utilizado o analisador de HTML phpQuery Eacute uma fer-
ramenta server-side orientado a seletores CSS3 e com meacutetodos para recuperaccedilatildeo
e manipulaccedilatildeo do Document Object Model (CUDNIK 2009)
20
3 Web Mining
Textos viacutedeos imagens e sons satildeo publicados e compartilhados a todo
momento e em todas as partes do mundo atraveacutes da World Wide Web O acompa-
nhamento absorccedilatildeo e compreensatildeo dessa imensuraacutevel quantidade de informaccedilatildeo
eacute uma tarefa impraticaacutevel ainda que em um niacutevel micro Por isso o conceito de
Web Mining foi criado por pesquisadores
Web Mining derivado da expressatildeo Data Mining pode ser amplamente
definido como a descoberta e anaacutelise de informaccedilatildeo uacutetil da World Wide Web (COO-
LEY MOBASHER SRIVASTAVA 1997)
Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e Srivastava(1997) Juacutenior (2007)
Uma taxonomia da Web Mining eacute apresentado na FIGURA 3 Nos paragraacute-
fos seguintes tem-se uma breve explicaccedilatildeo sobre cada subtoacutepico nela apresentada
sem se estender ateacute os noacutes do terceiro niacutevel
21
Web Structure Mining (Mineraccedilatildeo da Estrutura da Web) se refere ao pro-
cesso de descoberta de conhecimento atraveacutes da relaccedilatildeo entre os documentos con-
tidos na Web
Web Usage Mining (Mineraccedilatildeo do Uso da Web) analisa o padratildeo de com-
portamento de usuaacuterios na Web Como exemplo simples pode ser citado a desco-
berta de padrotildees no acesso de usuaacuterios a um determinado site em um Web server
Por fim Web Content Mining eacute tratado no subcapiacutetulo seguinte
31 Web Content Mining
Web Content Mining (Mineraccedilatildeo do Conteuacutedo da Web) eacute o processo de
extraccedilatildeo de informaccedilatildeo do conteuacutedo de documentos e seus metadados (palavras-
chave informaccedilotildees sobre produtos imagens etc) Apesar deste enfoque abranger
principalmente documentos HTML ele se estende a formatos natildeo-textuais como
imagens e viacutedeos (SANTOS 2009) Segundo Cooley Mobasher e Srivastava (1997)
Web Content Mining pode ser dividido em trecircs abordagens explicadas a seguir
A primeira delas Agent Based Approach em portuguecircs Abordagem Base-
ada em Agentes pode ser dividida nas seguintes categorias
bull Intelligent Search Agents (Agentes Inteligentes de Busca) sistemas que bus-
cam por dados relevantes organizando e interpretando a informaccedilatildeo desco-
berta FAQ-Finder (HAMMOND et al 1995) e BargainFinder (WAN PENG
2010) satildeo dois exemplos claacutessicos dessa categoria
bull Information FilteringCategorization (FiltragemCategorizaccedilatildeo de Informa-
ccedilatildeo) agentes que usam uma variedade de teacutecnicas de recuperaccedilatildeo de infor-
maccedilatildeo e caracteriacutesticas de documentos da Web para automaticamente ob-
ter filtrar e organizar a informaccedilatildeo BO (Bookmark Organizer) (MAAREK
SHAUL 1996) eacute um exemplo desse tipo de aplicaccedilatildeo tendo em vista que
22
ele organiza coleccedilotildees de documentos da Web baseados na sua informaccedilatildeo
conceitual
bull Personalized Web Agents (Agentes Web Personalizados) satildeo agentes que
aprendem as preferecircncias do usuaacuterio e descobrem informaccedilotildees da Web ba-
seada nessas preferecircncas (COOLEY MOBASHER SRIVASTAVA 1997)
A segunda abordagem Database Approach (Abordagem de Database)
foca em teacutecnicas para organizaccedilatildeo da informaccedilatildeo semi-estruturada da Web em
dados mais estruturados usando mecanismos padrotildees de consulta agrave databases e
teacutecnicas de data mining para anaacutelise Pode ser dividido em duas categorias
bull Multilevel Databases (Databases Multiniacuteveis) a principal ideia dessa abor-
dagem eacute que o niacutevel mais baixo da database contenha informaccedilatildeo semi-
estruturada armazenada em vaacuterios repositoacuterios Web Nos niacuteveis mais altos
meta dados ou generalizaccedilotildees satildeo extraiacutedos dos niacuteveis mais baixos e orga-
nizados em coleccedilotildees estruturadas como databases relacionais orientadas a
objetos (COOLEY MOBASHER SRIVASTAVA 1997)
bull Web Query Systems (Sistemas de Consultas Web) sistemas que utilizam
padrotildees de consultas a databases ou a informaccedilotildees estruturais sobre docu-
mentos Web e ateacute processadores de linguagens naturais para processar as
consultas que satildeo realizadas nas buscas na Internet (COOLEY MOBASHER
SRIVASTAVA 1997)
Este trabalho estaacute situado na aacuterea de Web Content Mining especificamente
na Abordagem Baseada em Agentes na categoria de Agentes Inteligentes de Busca
visto que o conteuacutedo presente no HTML de paacuteginas de e-commerce seratildeo anali-
sados por um robocirc de busca inteligente que coletaraacute e organizaraacute a informaccedilatildeo
relevante
23
32 Wrapper
A World Wide Web natildeo eacute estruturada de forma a apresentar informaccedilotildees
que possam ser lidas por maacutequinas A maioria da imensuraacutevel quantidade de dados
presente na Web estaacute apresentada em estruturas fracamente semacircnticas que natildeo po-
dem ser compreendidas por agentes (DOORENBOS ETZIONI WELD 1997) Faz-se
necessaacuterio entatildeo uma regra de traduccedilatildeo para cada fonte de dados A esse ldquotradutorrdquo
eacute dado o nome de wrapper (KUSHMERICK 1997 COWIE LEHNERT 1996)
Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers Fonte Yanget al (2000)
Formalmente um wrapper eacute um programa agente ou conjunto de regras
que entende a informaccedilatildeo de uma fonte e a traduz em uma forma regular e compre-
ensiacutevel que pode ser usada por outros agentes Um wrapper eacute especializado apenas
em uma uacutenica fonte de informaccedilotildees (YANG et al 2000) A FIGURA 4 mostra um
sistema de integraccedilatildeo de informaccedilotildees usando vaacuterios wrappers cada um para uma
fonte especiacutefica de informaccedilatildeo
24
Segundo Firat (2003) wrappers podem ser divididos em trecircs tipos baseado
no seu niacutevel de automaccedilatildeo
bull Manual codificar manualmente um wrapper normalmente eacute uma tarefa
tediosa e em alguns casos impraticaacutevel O nuacutemero de fontes de dados pode
ser muito grande ou crescer rapidamente e a estrutura e o conteuacutedo da fonte
pode frequentemente mudar Todos esses fatores tornam essa tarefa manual
altamente custosa e demorada (TATBUL et al 2001)
bull Semi-automaacutetico (interativo) em alguns casos as regras de um wrap-
per que lida com os detalhes especiacuteficos de uma fonte de dados eacute relati-
vamente pequena A outra parte eacute igual em todos os wrappers ou pode ser
gerada semi-automaticamente baseada em uma descriccedilatildeo declarativa dada
pelo usuaacuterio (TATBUL et al 2001)
bull Automaacutetico a geraccedilatildeo automaacutetica de um wrapper significa que natildeo haacute
intervenccedilatildeo humana nesse processo Ferramentas de geraccedilatildeo automaacutetica
podem ser especiacuteficas pra um site ou geneacutericas normalmente necessitam de
um estaacutegio de treinamento e satildeo baseados em algoritmos de aprendizado
supervisionado (TATBUL et al 2001)
Neste trabalho o wrapper gerado seraacute um conjunto de seletores CSS que
especificam quais dados de paacuteginas Web devem ser extraiacutedos gerando informaccedilotildees
relevantes a partir de documentos semi-estruturados
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
SUMAacuteRIO
1 Introduccedilatildeo 1111 Contextualizaccedilatildeo e Motivaccedilatildeo 1112 Objetivos 1313 Organizaccedilatildeo do Trabalho 132 Linguagem HTML 1421 HTML 1422 Document Object Model 1623 Seletores CSS 1724 HTML Parsers 183 Web Mining 2031 Web Content Mining 2132 Wrapper 234 Shopping Comparison 2541 Serviccedilos de Shopping Comparison 2542 Shopbot 2643 Impactos no Comeacutercio Eletrocircnico 295 Metodologia 3251 Meacutetodos 32511 Entendimento do Problema 3352 Material 34521 PHP 34522 phpQuery 34523 Ambiente Computacional 356 Arquitetura do Shopbot proposto 3661 Determinaccedilatildeo dos Termos de Busca adequados 37611 Detecccedilatildeo de Padrotildees 37612 Submissatildeo da URL e Termos de Busca 37613 Anaacutelise do HTML e Conversatildeo em Document Object Model 4062 Eliminaccedilatildeo de Ruiacutedos 4163 Ordenaccedilatildeo dos Resultados 4564 Geraccedilatildeo do Wrapper 48641 Formato do Wrapper 50642 Definindo Seletores CSS para os Anuacutencios 51643 Extraccedilatildeo do Tiacutetulo do Produto 51644 Extraccedilatildeo do Link do Produto 52645 Extraccedilatildeo do Parcelamento do Produto 53646 Extraccedilatildeo do Preccedilo do Produto 54
647 Extraccedilatildeo da Imagem do Produto 5665 Implementaccedilatildeo do Protoacutetipo 58651 Interface do Protoacutetipo 587 Resultados e Discussatildeo 6171 Resultados da Detecccedilatildeo de Padrotildees 6172 Resultados da Geraccedilatildeo de Wrapper 638 Conclusotildees e Trabalhos Futuros 66REFEREcircNCIAS 68
11
1 Introduccedilatildeo
11 Contextualizaccedilatildeo e Motivaccedilatildeo
A Era Digital tem inserido novas e importantes regras que regem a so-
ciedade moderna e o atual panorama socioeconocircmico Globalizaccedilatildeo competi-
ccedilatildeo informaccedilatildeo em grandes quantidades mudanccedilas constantes em curto espaccedilo
de tempo variedades de opccedilotildees e vaacuterios outros termos e efeitos dessa Era tecircm
surgido ao longo do tempo
Com a evoluccedilatildeo das tecnologias e o advento da Internet o comeacutercio se
modificou atraveacutes do surgimento do comeacutercio online tambeacutem chamado de e-
commerce ou comeacutercio virtual O consumidor antes limitado por barreiras ge-
ograacuteficas passou a ter acesso a um maior conjunto de lojas produtos e serviccedilos
atraveacutes da web
Segundo dados da empresa e-bit o comeacutercio eletrocircnico brasileiro alcan-
ccedilou um faturamento de R$ 187 bilhotildees em 2011 Um aumento de 26 em relaccedilatildeo
ao ano anterior quando o faturamento foi de R$ 148 bilhotildees O nuacutemero de consu-
midores que compraram pela web ao menos uma vez eacute de 32 milhotildees e apenas no
ano de 2011 foram efetuados 537 milhotildees de pedidos atraveacutes de 5000 lojas online
(EBIT 2011)
Atraveacutes das milhares de lojas o consumidor passou a ter mais opccedilotildees in-
formaccedilotildees e ofertas do que nunca Ele pode optar por fazer suas compras em gran-
des redes lojas virtuais especializadas cataacutelogos virtuais dentre outros meios E eacute
bombardeado com mensagens por diversos canais televisatildeo Internet raacutedio redes
sociais miacutedia impressa etc (MCKENNA 1999)
No entanto devido agrave imensuraacutevel quantidade de anuacutencios disponiacuteveis a
tarefa de escolher o produto desejado pelo melhor preccedilo torna-se demasiadamente
12
custosa Como um exemplo simples suponha-se um consumidor que deseja adqui-
rir uma TV LCD ele deve selecionar uma quantidade finita de lojas que conhece
buscar o produto desejado em cada loja e por fim cruzar os dados obtidos a fim
de encontrar o melhor custo-benefiacutecio Embora tal tarefa possa parecer simploacute-
ria ela se torna cada vez mais complexa agrave medida que mais lojas satildeo incluiacutedas na
pesquisa
Serviccedilos de Shopping Comparison se propotildeem a resolver esse problema
atraveacutes de um serviccedilo online baseado na web os consumidores podem encontrar
produtos preccedilos e outras informaccedilotildees de muacuteltiplas lojas online ao inveacutes de visitar
cada uma separadamente Os preccedilos e produtos satildeo apresentados na mesma inter-
face e o consumidor pode tomar a melhor decisatildeo sendo entatildeo redirecionado para
o fornecedor do produto para completar a transaccedilatildeo (WAN 2009)
Para que tais dados sejam apresentados eacute necessaacuterio que um agente de pes-
quisa de preccedilos chamado de Shopbot automaticamente pesquise uma coleccedilatildeo de
lojas online para coletar e comparar dados de um produto especificado (ZHANG
JING 2011) Entretanto natildeo existe uma padronizaccedilatildeo para a exibiccedilatildeo dos dados
dos produtos cada loja possui seu proacuteprio layout organizaccedilatildeo estrutural tecnolo-
gias etc Portanto desenvolver um bom agente de comparaccedilatildeo (shopbot) capaz
de coletar dados de muacuteltiplas fontes se torna uma tarefa natildeo trivial
A tarefa de descobrimento e anaacutelise de informaccedilotildees uacuteteis da World Wide
Web atraveacutes da busca automaacutetica de informaccedilatildeo de recursos disponiacuteveis online eacute
a definiccedilatildeo de Web Mining (COOLEY MOBASHER SRIVASTAVA 1997) Sendo este
trabalho portanto pertencente a essa linha de pesquisa
13
12 Objetivos
Este trabalho elabora um conjunto de regras e procedimentos para a de-
tecccedilatildeo de padrotildees identificaccedilatildeo de atributos extraccedilatildeo de dados em lojas de e-
commerce e geraccedilatildeo de um modelo geneacuterico e reaproveitaacutevel para cada fonte de
dados
Objetiva-se mensurar a eficiecircncia do modelo proposto em extrair dados
de produtos atraveacutes da implementaccedilatildeo de um protoacutetipo de shopbot que aplica tais
regras e procedimentos em uma aplicaccedilatildeo de Shopping Comparison
13 Organizaccedilatildeo do Trabalho
Este trabalho estaacute organizado da seguinte maneira
bull Os capiacutetulos 2 3 e 4 constituem o Referencial Teoacuterico deste trabalho No
capiacutetulo 2 tem-se a apresentaccedilatildeo de conceitos de HTML No capiacutetulo 3 eacute
realizada uma apresentaccedilatildeo sobre conceitos de Web Mining focando-se em
Web Content Mining Por fim no capiacutetulo 4 eacute dada uma definiccedilatildeo de Shop-
ping Comparison e Shopbot aleacutem dos seus impactos no comeacutercio online
bull O capiacutetulo 5 descreve a Metodologia utilizada no trabalho definindo os pro-
cedimentos metodoloacutegicos e as tecnologias utilizadas
bull No capiacutetulo 6 satildeo apresentados com detalhes as regras e procedimentos utili-
zados na construccedilatildeo do protoacutetipo de shopbot proposto neste trabalho desde
a elaboraccedilatildeo do algoritmo ateacute a interface do serviccedilo de Shopping Compari-
son
bull O capiacutetulo 7 conteacutem os resultados obtidos e algumas discussotildees a respeito
do que foi atingido
14
2 Linguagem HTML
A World Wide Web eacute uma imensa rede de informaccedilotildees Segundo o World
Wide Web Consortium a principal organizaccedilatildeo de padrotildees para a Internet a Web se
baseia em trecircs mecanismos que tornam esses recursos disponiacuteveis para o puacuteblico
mais amplo possiacutevel (CONSORTIUM 1999)
1 Um esquema de nomenclatura uniforme para a localizaccedilatildeo de recursos pre-
sentes na Web Ex Universal Resource Identifier ou URI
2 Protocolos para acesso agrave recursos nomeados na Web Ex Hypertext Trans-
fer Protocol ou HTTP
3 Hypertext para a faacutecil navegaccedilatildeo entre esses recursos Ex HTML
HTML que eacute usado para navegar entre os recursos da Web eacute tratado na
seccedilatildeo seguinte
21 HTML
HyperText Markup Language (HTML) eacute a liacutengua franca para publicaccedilatildeo
de conteuacutedo na World Wide Web Eacute um formato natildeo-proprietaacuterio que pode ser cri-
ado e processado por uma ampla variedade de ferramentas desde simples editores
de texto agrave ferramentas mais complexas de autoraccedilatildeo HTML usa tags como ltpgt
e ltpgt para estruturar o texto em tiacutetulos paraacutegrafos listas blocos imagens links
para outros documentos etc (CONSORTIUM 2010)
Um breve coacutedigo ou documento HTML eacute exibido abaixo
ltDOCTYPE html PUBLIC -W3CDTD XHTML 10 StrictEN
httpwwww3orgTRxhtml1DTDxhtml1-strictdtdgt
lthtml xmlns=httpwwww3org1999xhtml xmllang=en lang=engt
15
lthead gt
lttitle gtTitulo da Pagina HTML lttitle gt
lthead gt
ltbody gt
ltdiv id=conteudo class=blocogt
lth1gtTitulo do Texto lth1gt
ltpgtParagrafo contendo textoltpgt
ltpgtSegundo paragrafo com mais textoltpgt
ltdivgt
ltdiv class=blocogt
ltpgtltstrong gtTexto em negritoltstrong gtltpgt
ltpgtltemgtTexto em italicoltemgtltpgt
ltdivgt
ltbody gt
lthtml gt
A interpretaccedilatildeo desse coacutedigo pelo browser Google Chrome eacute exibido na
FIGURA 1
Figura 1 Interpretaccedilatildeo de coacutedigo HTML pelo browser Google Chrome
16
Apesar do HTML possuir uma grande quantidade de tags para formataccedilatildeo
de documentos existe uma limitaccedilatildeo histoacuterica em seu projeto as tags usadas satildeo
semi-estruturadas elas apenas descrevem como a informaccedilatildeo deve ser exibida mas
natildeo do que se trata os dados (WAN 2009) Dessa forma natildeo eacute uma linguagem
semacircntica que pode ter sua informaccedilatildeo trivialmente extraiacuteda e interpretada por
agentes computacionais
22 Document Object Model
Document Object Model abreviadamente chamado de DOM eacute uma in-
terface de programaccedilatildeo de aplicaccedilotildees ou API para documentos HTML vaacutelidos e
XML corretamente formatados Ela define a estrutura loacutegica dos documentos e a
maneira como seratildeo acessados e manipulados Atraveacutes da DOM programadores
podem construir documentos navegar pela sua estrutura adicionar modificar ou
remover elementos e conteuacutedo (ROBIE et al 2000)
Como eacute uma especificaccedilatildeo do World Wide Web Consortium ou W3C o
objetivo da Document Object Model eacute fornecer uma API padratildeo que possa ser
usada por uma ampla variedade de linguagens de programaccedilatildeo
No DOM os documentos tem uma estrutura loacutegica que eacute muito parecida
com uma aacutervore mais precisamente uma ldquoflorestardquo que eacute um conjunto de aacutervo-
res Cada documento conteacutem zero ou um noacute de declaraccedilatildeo de tipo de documento
(DOCTYPE) um noacute raiz e zero ou mais instruccedilotildees de processamento e comentaacute-
rios O elemento raiz funciona como o noacute raiz da aacutervore do documento (ROBIE et
al 2000)
Como exemplo considere o coacutedigo HTML apresentado na seccedilatildeo anterior
A aacutervore DOM deste documento eacute apresentada na FIGURA 2 Atraveacutes da manipu-
laccedilatildeo desta aacutervore eacute possiacutevel adicionar novos elementos atraveacutes da simples adiccedilatildeo
17
de novos noacutes agrave estrutura remover elementos atraveacutes da remoccedilatildeo de noacutes e editar
conteuacutedo textuais ou estruturais seja alterando textos ou modificando noacutes
Figura 2 Reproduccedilatildeo de uma aacutervore DOM para um documento HTML
Eacute facilmente perceptiacutevel que a API DOM eacute de suma importacircncia na anaacutelise
de conteuacutedos provenientes da World Wide Web
23 Seletores CSS
Cascading Style Sheets (CSS) eacute uma linguagem de estilo utilizada para
descrever a apresentaccedilatildeo de paacuteginas Web incluindo cores layouts fonte etc (CON-
SORTIUM 2011) Para que os elementos possam ser estilizados existem regras de
correspondecircncia para determinar quais regras se aplicam a elementos da aacutervore
DOM (BOS et al 2011)
18
Um simples exemplo de um documento CSS eacute apresentado a seguir con-
tendo alguns seletores
font -size 12px
h1
color red
p
color black
O CSS acima especifica atraveacutes do uso do seletor ldquordquo que qualquer ele-
mento do documento no qual eacute aplicado deve ter o texto no tamanho de 12 pixels
todos os elementos do tipo ldquoh1rdquo teratildeo o texto da cor vermelha e os elementos do
tipo ldquoprdquo teratildeo a cor preta especificados atraveacutes do uso de seletores homocircnimos a
esses elementos Na Quadro 1 eacute apresentada a sintaxe de alguns seletores CSS da
especificaccedilatildeo 21
Eacute importante ressaltar que seletores CSS natildeo satildeo usados unicamente para
definir estilos para paacuteginas Web Eles tambeacutem satildeo usados na navegaccedilatildeo pela aacutervore
DOM para que atributos e conteuacutedos dos noacutes possam ser recuperados modificados
ou excluiacutedos de forma mais dinacircmica Por exemplo na aacutervore DOM exibida na
FIGURA 2 o seletor ldquoconteudordquo retornaria o noacute ldquoltdivgtrdquo mais agrave esquerda
24 HTML Parsers
Um HTML Parser eacute uma ferramenta que cria uma aacutervore DOM a partir
da anaacutelise de um coacutedigo HTML (NYEIN 2011) O analisador eacute capaz de detectar
e corrigir vaacuterios erros de sintaxe HTML em documentos mal formatados (YANG
ZHANG TSAI 2008)
19
Padratildeo Significado Corresponde a qualquer ele-
mentoE Corresponde a qualquer ele-
mento E (isto eacute um elemento dotipo E)
E F Corresponde a qualquer ele-mento F que eacute descendente deum elemento E
E gt F Corresponde a qualquer ele-mento F que eacute filho do elementoE
Efirst-child Corresponde agrave primeira ocorrecircn-cia do elemento E
Ewarning Corresponde a qualquer ele-mento do tipo E que possui aclasse ldquowarningrdquo
Emyid Corresponde a qualquer ele-mento E que possui o ID ldquomyidrdquo
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011)
Normalmente eacute disponibilizada uma interface para que a aacutervore DOM
possa ser navegada Alguns parsers permitem que essa funccedilatildeo seja realizada atra-
veacutes de seletores CSS aleacutem de prover meacutetodos que permitem manipular e recuperar
informaccedilotildees de noacutes
Neste trabalho eacute utilizado o analisador de HTML phpQuery Eacute uma fer-
ramenta server-side orientado a seletores CSS3 e com meacutetodos para recuperaccedilatildeo
e manipulaccedilatildeo do Document Object Model (CUDNIK 2009)
20
3 Web Mining
Textos viacutedeos imagens e sons satildeo publicados e compartilhados a todo
momento e em todas as partes do mundo atraveacutes da World Wide Web O acompa-
nhamento absorccedilatildeo e compreensatildeo dessa imensuraacutevel quantidade de informaccedilatildeo
eacute uma tarefa impraticaacutevel ainda que em um niacutevel micro Por isso o conceito de
Web Mining foi criado por pesquisadores
Web Mining derivado da expressatildeo Data Mining pode ser amplamente
definido como a descoberta e anaacutelise de informaccedilatildeo uacutetil da World Wide Web (COO-
LEY MOBASHER SRIVASTAVA 1997)
Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e Srivastava(1997) Juacutenior (2007)
Uma taxonomia da Web Mining eacute apresentado na FIGURA 3 Nos paragraacute-
fos seguintes tem-se uma breve explicaccedilatildeo sobre cada subtoacutepico nela apresentada
sem se estender ateacute os noacutes do terceiro niacutevel
21
Web Structure Mining (Mineraccedilatildeo da Estrutura da Web) se refere ao pro-
cesso de descoberta de conhecimento atraveacutes da relaccedilatildeo entre os documentos con-
tidos na Web
Web Usage Mining (Mineraccedilatildeo do Uso da Web) analisa o padratildeo de com-
portamento de usuaacuterios na Web Como exemplo simples pode ser citado a desco-
berta de padrotildees no acesso de usuaacuterios a um determinado site em um Web server
Por fim Web Content Mining eacute tratado no subcapiacutetulo seguinte
31 Web Content Mining
Web Content Mining (Mineraccedilatildeo do Conteuacutedo da Web) eacute o processo de
extraccedilatildeo de informaccedilatildeo do conteuacutedo de documentos e seus metadados (palavras-
chave informaccedilotildees sobre produtos imagens etc) Apesar deste enfoque abranger
principalmente documentos HTML ele se estende a formatos natildeo-textuais como
imagens e viacutedeos (SANTOS 2009) Segundo Cooley Mobasher e Srivastava (1997)
Web Content Mining pode ser dividido em trecircs abordagens explicadas a seguir
A primeira delas Agent Based Approach em portuguecircs Abordagem Base-
ada em Agentes pode ser dividida nas seguintes categorias
bull Intelligent Search Agents (Agentes Inteligentes de Busca) sistemas que bus-
cam por dados relevantes organizando e interpretando a informaccedilatildeo desco-
berta FAQ-Finder (HAMMOND et al 1995) e BargainFinder (WAN PENG
2010) satildeo dois exemplos claacutessicos dessa categoria
bull Information FilteringCategorization (FiltragemCategorizaccedilatildeo de Informa-
ccedilatildeo) agentes que usam uma variedade de teacutecnicas de recuperaccedilatildeo de infor-
maccedilatildeo e caracteriacutesticas de documentos da Web para automaticamente ob-
ter filtrar e organizar a informaccedilatildeo BO (Bookmark Organizer) (MAAREK
SHAUL 1996) eacute um exemplo desse tipo de aplicaccedilatildeo tendo em vista que
22
ele organiza coleccedilotildees de documentos da Web baseados na sua informaccedilatildeo
conceitual
bull Personalized Web Agents (Agentes Web Personalizados) satildeo agentes que
aprendem as preferecircncias do usuaacuterio e descobrem informaccedilotildees da Web ba-
seada nessas preferecircncas (COOLEY MOBASHER SRIVASTAVA 1997)
A segunda abordagem Database Approach (Abordagem de Database)
foca em teacutecnicas para organizaccedilatildeo da informaccedilatildeo semi-estruturada da Web em
dados mais estruturados usando mecanismos padrotildees de consulta agrave databases e
teacutecnicas de data mining para anaacutelise Pode ser dividido em duas categorias
bull Multilevel Databases (Databases Multiniacuteveis) a principal ideia dessa abor-
dagem eacute que o niacutevel mais baixo da database contenha informaccedilatildeo semi-
estruturada armazenada em vaacuterios repositoacuterios Web Nos niacuteveis mais altos
meta dados ou generalizaccedilotildees satildeo extraiacutedos dos niacuteveis mais baixos e orga-
nizados em coleccedilotildees estruturadas como databases relacionais orientadas a
objetos (COOLEY MOBASHER SRIVASTAVA 1997)
bull Web Query Systems (Sistemas de Consultas Web) sistemas que utilizam
padrotildees de consultas a databases ou a informaccedilotildees estruturais sobre docu-
mentos Web e ateacute processadores de linguagens naturais para processar as
consultas que satildeo realizadas nas buscas na Internet (COOLEY MOBASHER
SRIVASTAVA 1997)
Este trabalho estaacute situado na aacuterea de Web Content Mining especificamente
na Abordagem Baseada em Agentes na categoria de Agentes Inteligentes de Busca
visto que o conteuacutedo presente no HTML de paacuteginas de e-commerce seratildeo anali-
sados por um robocirc de busca inteligente que coletaraacute e organizaraacute a informaccedilatildeo
relevante
23
32 Wrapper
A World Wide Web natildeo eacute estruturada de forma a apresentar informaccedilotildees
que possam ser lidas por maacutequinas A maioria da imensuraacutevel quantidade de dados
presente na Web estaacute apresentada em estruturas fracamente semacircnticas que natildeo po-
dem ser compreendidas por agentes (DOORENBOS ETZIONI WELD 1997) Faz-se
necessaacuterio entatildeo uma regra de traduccedilatildeo para cada fonte de dados A esse ldquotradutorrdquo
eacute dado o nome de wrapper (KUSHMERICK 1997 COWIE LEHNERT 1996)
Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers Fonte Yanget al (2000)
Formalmente um wrapper eacute um programa agente ou conjunto de regras
que entende a informaccedilatildeo de uma fonte e a traduz em uma forma regular e compre-
ensiacutevel que pode ser usada por outros agentes Um wrapper eacute especializado apenas
em uma uacutenica fonte de informaccedilotildees (YANG et al 2000) A FIGURA 4 mostra um
sistema de integraccedilatildeo de informaccedilotildees usando vaacuterios wrappers cada um para uma
fonte especiacutefica de informaccedilatildeo
24
Segundo Firat (2003) wrappers podem ser divididos em trecircs tipos baseado
no seu niacutevel de automaccedilatildeo
bull Manual codificar manualmente um wrapper normalmente eacute uma tarefa
tediosa e em alguns casos impraticaacutevel O nuacutemero de fontes de dados pode
ser muito grande ou crescer rapidamente e a estrutura e o conteuacutedo da fonte
pode frequentemente mudar Todos esses fatores tornam essa tarefa manual
altamente custosa e demorada (TATBUL et al 2001)
bull Semi-automaacutetico (interativo) em alguns casos as regras de um wrap-
per que lida com os detalhes especiacuteficos de uma fonte de dados eacute relati-
vamente pequena A outra parte eacute igual em todos os wrappers ou pode ser
gerada semi-automaticamente baseada em uma descriccedilatildeo declarativa dada
pelo usuaacuterio (TATBUL et al 2001)
bull Automaacutetico a geraccedilatildeo automaacutetica de um wrapper significa que natildeo haacute
intervenccedilatildeo humana nesse processo Ferramentas de geraccedilatildeo automaacutetica
podem ser especiacuteficas pra um site ou geneacutericas normalmente necessitam de
um estaacutegio de treinamento e satildeo baseados em algoritmos de aprendizado
supervisionado (TATBUL et al 2001)
Neste trabalho o wrapper gerado seraacute um conjunto de seletores CSS que
especificam quais dados de paacuteginas Web devem ser extraiacutedos gerando informaccedilotildees
relevantes a partir de documentos semi-estruturados
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
647 Extraccedilatildeo da Imagem do Produto 5665 Implementaccedilatildeo do Protoacutetipo 58651 Interface do Protoacutetipo 587 Resultados e Discussatildeo 6171 Resultados da Detecccedilatildeo de Padrotildees 6172 Resultados da Geraccedilatildeo de Wrapper 638 Conclusotildees e Trabalhos Futuros 66REFEREcircNCIAS 68
11
1 Introduccedilatildeo
11 Contextualizaccedilatildeo e Motivaccedilatildeo
A Era Digital tem inserido novas e importantes regras que regem a so-
ciedade moderna e o atual panorama socioeconocircmico Globalizaccedilatildeo competi-
ccedilatildeo informaccedilatildeo em grandes quantidades mudanccedilas constantes em curto espaccedilo
de tempo variedades de opccedilotildees e vaacuterios outros termos e efeitos dessa Era tecircm
surgido ao longo do tempo
Com a evoluccedilatildeo das tecnologias e o advento da Internet o comeacutercio se
modificou atraveacutes do surgimento do comeacutercio online tambeacutem chamado de e-
commerce ou comeacutercio virtual O consumidor antes limitado por barreiras ge-
ograacuteficas passou a ter acesso a um maior conjunto de lojas produtos e serviccedilos
atraveacutes da web
Segundo dados da empresa e-bit o comeacutercio eletrocircnico brasileiro alcan-
ccedilou um faturamento de R$ 187 bilhotildees em 2011 Um aumento de 26 em relaccedilatildeo
ao ano anterior quando o faturamento foi de R$ 148 bilhotildees O nuacutemero de consu-
midores que compraram pela web ao menos uma vez eacute de 32 milhotildees e apenas no
ano de 2011 foram efetuados 537 milhotildees de pedidos atraveacutes de 5000 lojas online
(EBIT 2011)
Atraveacutes das milhares de lojas o consumidor passou a ter mais opccedilotildees in-
formaccedilotildees e ofertas do que nunca Ele pode optar por fazer suas compras em gran-
des redes lojas virtuais especializadas cataacutelogos virtuais dentre outros meios E eacute
bombardeado com mensagens por diversos canais televisatildeo Internet raacutedio redes
sociais miacutedia impressa etc (MCKENNA 1999)
No entanto devido agrave imensuraacutevel quantidade de anuacutencios disponiacuteveis a
tarefa de escolher o produto desejado pelo melhor preccedilo torna-se demasiadamente
12
custosa Como um exemplo simples suponha-se um consumidor que deseja adqui-
rir uma TV LCD ele deve selecionar uma quantidade finita de lojas que conhece
buscar o produto desejado em cada loja e por fim cruzar os dados obtidos a fim
de encontrar o melhor custo-benefiacutecio Embora tal tarefa possa parecer simploacute-
ria ela se torna cada vez mais complexa agrave medida que mais lojas satildeo incluiacutedas na
pesquisa
Serviccedilos de Shopping Comparison se propotildeem a resolver esse problema
atraveacutes de um serviccedilo online baseado na web os consumidores podem encontrar
produtos preccedilos e outras informaccedilotildees de muacuteltiplas lojas online ao inveacutes de visitar
cada uma separadamente Os preccedilos e produtos satildeo apresentados na mesma inter-
face e o consumidor pode tomar a melhor decisatildeo sendo entatildeo redirecionado para
o fornecedor do produto para completar a transaccedilatildeo (WAN 2009)
Para que tais dados sejam apresentados eacute necessaacuterio que um agente de pes-
quisa de preccedilos chamado de Shopbot automaticamente pesquise uma coleccedilatildeo de
lojas online para coletar e comparar dados de um produto especificado (ZHANG
JING 2011) Entretanto natildeo existe uma padronizaccedilatildeo para a exibiccedilatildeo dos dados
dos produtos cada loja possui seu proacuteprio layout organizaccedilatildeo estrutural tecnolo-
gias etc Portanto desenvolver um bom agente de comparaccedilatildeo (shopbot) capaz
de coletar dados de muacuteltiplas fontes se torna uma tarefa natildeo trivial
A tarefa de descobrimento e anaacutelise de informaccedilotildees uacuteteis da World Wide
Web atraveacutes da busca automaacutetica de informaccedilatildeo de recursos disponiacuteveis online eacute
a definiccedilatildeo de Web Mining (COOLEY MOBASHER SRIVASTAVA 1997) Sendo este
trabalho portanto pertencente a essa linha de pesquisa
13
12 Objetivos
Este trabalho elabora um conjunto de regras e procedimentos para a de-
tecccedilatildeo de padrotildees identificaccedilatildeo de atributos extraccedilatildeo de dados em lojas de e-
commerce e geraccedilatildeo de um modelo geneacuterico e reaproveitaacutevel para cada fonte de
dados
Objetiva-se mensurar a eficiecircncia do modelo proposto em extrair dados
de produtos atraveacutes da implementaccedilatildeo de um protoacutetipo de shopbot que aplica tais
regras e procedimentos em uma aplicaccedilatildeo de Shopping Comparison
13 Organizaccedilatildeo do Trabalho
Este trabalho estaacute organizado da seguinte maneira
bull Os capiacutetulos 2 3 e 4 constituem o Referencial Teoacuterico deste trabalho No
capiacutetulo 2 tem-se a apresentaccedilatildeo de conceitos de HTML No capiacutetulo 3 eacute
realizada uma apresentaccedilatildeo sobre conceitos de Web Mining focando-se em
Web Content Mining Por fim no capiacutetulo 4 eacute dada uma definiccedilatildeo de Shop-
ping Comparison e Shopbot aleacutem dos seus impactos no comeacutercio online
bull O capiacutetulo 5 descreve a Metodologia utilizada no trabalho definindo os pro-
cedimentos metodoloacutegicos e as tecnologias utilizadas
bull No capiacutetulo 6 satildeo apresentados com detalhes as regras e procedimentos utili-
zados na construccedilatildeo do protoacutetipo de shopbot proposto neste trabalho desde
a elaboraccedilatildeo do algoritmo ateacute a interface do serviccedilo de Shopping Compari-
son
bull O capiacutetulo 7 conteacutem os resultados obtidos e algumas discussotildees a respeito
do que foi atingido
14
2 Linguagem HTML
A World Wide Web eacute uma imensa rede de informaccedilotildees Segundo o World
Wide Web Consortium a principal organizaccedilatildeo de padrotildees para a Internet a Web se
baseia em trecircs mecanismos que tornam esses recursos disponiacuteveis para o puacuteblico
mais amplo possiacutevel (CONSORTIUM 1999)
1 Um esquema de nomenclatura uniforme para a localizaccedilatildeo de recursos pre-
sentes na Web Ex Universal Resource Identifier ou URI
2 Protocolos para acesso agrave recursos nomeados na Web Ex Hypertext Trans-
fer Protocol ou HTTP
3 Hypertext para a faacutecil navegaccedilatildeo entre esses recursos Ex HTML
HTML que eacute usado para navegar entre os recursos da Web eacute tratado na
seccedilatildeo seguinte
21 HTML
HyperText Markup Language (HTML) eacute a liacutengua franca para publicaccedilatildeo
de conteuacutedo na World Wide Web Eacute um formato natildeo-proprietaacuterio que pode ser cri-
ado e processado por uma ampla variedade de ferramentas desde simples editores
de texto agrave ferramentas mais complexas de autoraccedilatildeo HTML usa tags como ltpgt
e ltpgt para estruturar o texto em tiacutetulos paraacutegrafos listas blocos imagens links
para outros documentos etc (CONSORTIUM 2010)
Um breve coacutedigo ou documento HTML eacute exibido abaixo
ltDOCTYPE html PUBLIC -W3CDTD XHTML 10 StrictEN
httpwwww3orgTRxhtml1DTDxhtml1-strictdtdgt
lthtml xmlns=httpwwww3org1999xhtml xmllang=en lang=engt
15
lthead gt
lttitle gtTitulo da Pagina HTML lttitle gt
lthead gt
ltbody gt
ltdiv id=conteudo class=blocogt
lth1gtTitulo do Texto lth1gt
ltpgtParagrafo contendo textoltpgt
ltpgtSegundo paragrafo com mais textoltpgt
ltdivgt
ltdiv class=blocogt
ltpgtltstrong gtTexto em negritoltstrong gtltpgt
ltpgtltemgtTexto em italicoltemgtltpgt
ltdivgt
ltbody gt
lthtml gt
A interpretaccedilatildeo desse coacutedigo pelo browser Google Chrome eacute exibido na
FIGURA 1
Figura 1 Interpretaccedilatildeo de coacutedigo HTML pelo browser Google Chrome
16
Apesar do HTML possuir uma grande quantidade de tags para formataccedilatildeo
de documentos existe uma limitaccedilatildeo histoacuterica em seu projeto as tags usadas satildeo
semi-estruturadas elas apenas descrevem como a informaccedilatildeo deve ser exibida mas
natildeo do que se trata os dados (WAN 2009) Dessa forma natildeo eacute uma linguagem
semacircntica que pode ter sua informaccedilatildeo trivialmente extraiacuteda e interpretada por
agentes computacionais
22 Document Object Model
Document Object Model abreviadamente chamado de DOM eacute uma in-
terface de programaccedilatildeo de aplicaccedilotildees ou API para documentos HTML vaacutelidos e
XML corretamente formatados Ela define a estrutura loacutegica dos documentos e a
maneira como seratildeo acessados e manipulados Atraveacutes da DOM programadores
podem construir documentos navegar pela sua estrutura adicionar modificar ou
remover elementos e conteuacutedo (ROBIE et al 2000)
Como eacute uma especificaccedilatildeo do World Wide Web Consortium ou W3C o
objetivo da Document Object Model eacute fornecer uma API padratildeo que possa ser
usada por uma ampla variedade de linguagens de programaccedilatildeo
No DOM os documentos tem uma estrutura loacutegica que eacute muito parecida
com uma aacutervore mais precisamente uma ldquoflorestardquo que eacute um conjunto de aacutervo-
res Cada documento conteacutem zero ou um noacute de declaraccedilatildeo de tipo de documento
(DOCTYPE) um noacute raiz e zero ou mais instruccedilotildees de processamento e comentaacute-
rios O elemento raiz funciona como o noacute raiz da aacutervore do documento (ROBIE et
al 2000)
Como exemplo considere o coacutedigo HTML apresentado na seccedilatildeo anterior
A aacutervore DOM deste documento eacute apresentada na FIGURA 2 Atraveacutes da manipu-
laccedilatildeo desta aacutervore eacute possiacutevel adicionar novos elementos atraveacutes da simples adiccedilatildeo
17
de novos noacutes agrave estrutura remover elementos atraveacutes da remoccedilatildeo de noacutes e editar
conteuacutedo textuais ou estruturais seja alterando textos ou modificando noacutes
Figura 2 Reproduccedilatildeo de uma aacutervore DOM para um documento HTML
Eacute facilmente perceptiacutevel que a API DOM eacute de suma importacircncia na anaacutelise
de conteuacutedos provenientes da World Wide Web
23 Seletores CSS
Cascading Style Sheets (CSS) eacute uma linguagem de estilo utilizada para
descrever a apresentaccedilatildeo de paacuteginas Web incluindo cores layouts fonte etc (CON-
SORTIUM 2011) Para que os elementos possam ser estilizados existem regras de
correspondecircncia para determinar quais regras se aplicam a elementos da aacutervore
DOM (BOS et al 2011)
18
Um simples exemplo de um documento CSS eacute apresentado a seguir con-
tendo alguns seletores
font -size 12px
h1
color red
p
color black
O CSS acima especifica atraveacutes do uso do seletor ldquordquo que qualquer ele-
mento do documento no qual eacute aplicado deve ter o texto no tamanho de 12 pixels
todos os elementos do tipo ldquoh1rdquo teratildeo o texto da cor vermelha e os elementos do
tipo ldquoprdquo teratildeo a cor preta especificados atraveacutes do uso de seletores homocircnimos a
esses elementos Na Quadro 1 eacute apresentada a sintaxe de alguns seletores CSS da
especificaccedilatildeo 21
Eacute importante ressaltar que seletores CSS natildeo satildeo usados unicamente para
definir estilos para paacuteginas Web Eles tambeacutem satildeo usados na navegaccedilatildeo pela aacutervore
DOM para que atributos e conteuacutedos dos noacutes possam ser recuperados modificados
ou excluiacutedos de forma mais dinacircmica Por exemplo na aacutervore DOM exibida na
FIGURA 2 o seletor ldquoconteudordquo retornaria o noacute ldquoltdivgtrdquo mais agrave esquerda
24 HTML Parsers
Um HTML Parser eacute uma ferramenta que cria uma aacutervore DOM a partir
da anaacutelise de um coacutedigo HTML (NYEIN 2011) O analisador eacute capaz de detectar
e corrigir vaacuterios erros de sintaxe HTML em documentos mal formatados (YANG
ZHANG TSAI 2008)
19
Padratildeo Significado Corresponde a qualquer ele-
mentoE Corresponde a qualquer ele-
mento E (isto eacute um elemento dotipo E)
E F Corresponde a qualquer ele-mento F que eacute descendente deum elemento E
E gt F Corresponde a qualquer ele-mento F que eacute filho do elementoE
Efirst-child Corresponde agrave primeira ocorrecircn-cia do elemento E
Ewarning Corresponde a qualquer ele-mento do tipo E que possui aclasse ldquowarningrdquo
Emyid Corresponde a qualquer ele-mento E que possui o ID ldquomyidrdquo
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011)
Normalmente eacute disponibilizada uma interface para que a aacutervore DOM
possa ser navegada Alguns parsers permitem que essa funccedilatildeo seja realizada atra-
veacutes de seletores CSS aleacutem de prover meacutetodos que permitem manipular e recuperar
informaccedilotildees de noacutes
Neste trabalho eacute utilizado o analisador de HTML phpQuery Eacute uma fer-
ramenta server-side orientado a seletores CSS3 e com meacutetodos para recuperaccedilatildeo
e manipulaccedilatildeo do Document Object Model (CUDNIK 2009)
20
3 Web Mining
Textos viacutedeos imagens e sons satildeo publicados e compartilhados a todo
momento e em todas as partes do mundo atraveacutes da World Wide Web O acompa-
nhamento absorccedilatildeo e compreensatildeo dessa imensuraacutevel quantidade de informaccedilatildeo
eacute uma tarefa impraticaacutevel ainda que em um niacutevel micro Por isso o conceito de
Web Mining foi criado por pesquisadores
Web Mining derivado da expressatildeo Data Mining pode ser amplamente
definido como a descoberta e anaacutelise de informaccedilatildeo uacutetil da World Wide Web (COO-
LEY MOBASHER SRIVASTAVA 1997)
Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e Srivastava(1997) Juacutenior (2007)
Uma taxonomia da Web Mining eacute apresentado na FIGURA 3 Nos paragraacute-
fos seguintes tem-se uma breve explicaccedilatildeo sobre cada subtoacutepico nela apresentada
sem se estender ateacute os noacutes do terceiro niacutevel
21
Web Structure Mining (Mineraccedilatildeo da Estrutura da Web) se refere ao pro-
cesso de descoberta de conhecimento atraveacutes da relaccedilatildeo entre os documentos con-
tidos na Web
Web Usage Mining (Mineraccedilatildeo do Uso da Web) analisa o padratildeo de com-
portamento de usuaacuterios na Web Como exemplo simples pode ser citado a desco-
berta de padrotildees no acesso de usuaacuterios a um determinado site em um Web server
Por fim Web Content Mining eacute tratado no subcapiacutetulo seguinte
31 Web Content Mining
Web Content Mining (Mineraccedilatildeo do Conteuacutedo da Web) eacute o processo de
extraccedilatildeo de informaccedilatildeo do conteuacutedo de documentos e seus metadados (palavras-
chave informaccedilotildees sobre produtos imagens etc) Apesar deste enfoque abranger
principalmente documentos HTML ele se estende a formatos natildeo-textuais como
imagens e viacutedeos (SANTOS 2009) Segundo Cooley Mobasher e Srivastava (1997)
Web Content Mining pode ser dividido em trecircs abordagens explicadas a seguir
A primeira delas Agent Based Approach em portuguecircs Abordagem Base-
ada em Agentes pode ser dividida nas seguintes categorias
bull Intelligent Search Agents (Agentes Inteligentes de Busca) sistemas que bus-
cam por dados relevantes organizando e interpretando a informaccedilatildeo desco-
berta FAQ-Finder (HAMMOND et al 1995) e BargainFinder (WAN PENG
2010) satildeo dois exemplos claacutessicos dessa categoria
bull Information FilteringCategorization (FiltragemCategorizaccedilatildeo de Informa-
ccedilatildeo) agentes que usam uma variedade de teacutecnicas de recuperaccedilatildeo de infor-
maccedilatildeo e caracteriacutesticas de documentos da Web para automaticamente ob-
ter filtrar e organizar a informaccedilatildeo BO (Bookmark Organizer) (MAAREK
SHAUL 1996) eacute um exemplo desse tipo de aplicaccedilatildeo tendo em vista que
22
ele organiza coleccedilotildees de documentos da Web baseados na sua informaccedilatildeo
conceitual
bull Personalized Web Agents (Agentes Web Personalizados) satildeo agentes que
aprendem as preferecircncias do usuaacuterio e descobrem informaccedilotildees da Web ba-
seada nessas preferecircncas (COOLEY MOBASHER SRIVASTAVA 1997)
A segunda abordagem Database Approach (Abordagem de Database)
foca em teacutecnicas para organizaccedilatildeo da informaccedilatildeo semi-estruturada da Web em
dados mais estruturados usando mecanismos padrotildees de consulta agrave databases e
teacutecnicas de data mining para anaacutelise Pode ser dividido em duas categorias
bull Multilevel Databases (Databases Multiniacuteveis) a principal ideia dessa abor-
dagem eacute que o niacutevel mais baixo da database contenha informaccedilatildeo semi-
estruturada armazenada em vaacuterios repositoacuterios Web Nos niacuteveis mais altos
meta dados ou generalizaccedilotildees satildeo extraiacutedos dos niacuteveis mais baixos e orga-
nizados em coleccedilotildees estruturadas como databases relacionais orientadas a
objetos (COOLEY MOBASHER SRIVASTAVA 1997)
bull Web Query Systems (Sistemas de Consultas Web) sistemas que utilizam
padrotildees de consultas a databases ou a informaccedilotildees estruturais sobre docu-
mentos Web e ateacute processadores de linguagens naturais para processar as
consultas que satildeo realizadas nas buscas na Internet (COOLEY MOBASHER
SRIVASTAVA 1997)
Este trabalho estaacute situado na aacuterea de Web Content Mining especificamente
na Abordagem Baseada em Agentes na categoria de Agentes Inteligentes de Busca
visto que o conteuacutedo presente no HTML de paacuteginas de e-commerce seratildeo anali-
sados por um robocirc de busca inteligente que coletaraacute e organizaraacute a informaccedilatildeo
relevante
23
32 Wrapper
A World Wide Web natildeo eacute estruturada de forma a apresentar informaccedilotildees
que possam ser lidas por maacutequinas A maioria da imensuraacutevel quantidade de dados
presente na Web estaacute apresentada em estruturas fracamente semacircnticas que natildeo po-
dem ser compreendidas por agentes (DOORENBOS ETZIONI WELD 1997) Faz-se
necessaacuterio entatildeo uma regra de traduccedilatildeo para cada fonte de dados A esse ldquotradutorrdquo
eacute dado o nome de wrapper (KUSHMERICK 1997 COWIE LEHNERT 1996)
Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers Fonte Yanget al (2000)
Formalmente um wrapper eacute um programa agente ou conjunto de regras
que entende a informaccedilatildeo de uma fonte e a traduz em uma forma regular e compre-
ensiacutevel que pode ser usada por outros agentes Um wrapper eacute especializado apenas
em uma uacutenica fonte de informaccedilotildees (YANG et al 2000) A FIGURA 4 mostra um
sistema de integraccedilatildeo de informaccedilotildees usando vaacuterios wrappers cada um para uma
fonte especiacutefica de informaccedilatildeo
24
Segundo Firat (2003) wrappers podem ser divididos em trecircs tipos baseado
no seu niacutevel de automaccedilatildeo
bull Manual codificar manualmente um wrapper normalmente eacute uma tarefa
tediosa e em alguns casos impraticaacutevel O nuacutemero de fontes de dados pode
ser muito grande ou crescer rapidamente e a estrutura e o conteuacutedo da fonte
pode frequentemente mudar Todos esses fatores tornam essa tarefa manual
altamente custosa e demorada (TATBUL et al 2001)
bull Semi-automaacutetico (interativo) em alguns casos as regras de um wrap-
per que lida com os detalhes especiacuteficos de uma fonte de dados eacute relati-
vamente pequena A outra parte eacute igual em todos os wrappers ou pode ser
gerada semi-automaticamente baseada em uma descriccedilatildeo declarativa dada
pelo usuaacuterio (TATBUL et al 2001)
bull Automaacutetico a geraccedilatildeo automaacutetica de um wrapper significa que natildeo haacute
intervenccedilatildeo humana nesse processo Ferramentas de geraccedilatildeo automaacutetica
podem ser especiacuteficas pra um site ou geneacutericas normalmente necessitam de
um estaacutegio de treinamento e satildeo baseados em algoritmos de aprendizado
supervisionado (TATBUL et al 2001)
Neste trabalho o wrapper gerado seraacute um conjunto de seletores CSS que
especificam quais dados de paacuteginas Web devem ser extraiacutedos gerando informaccedilotildees
relevantes a partir de documentos semi-estruturados
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
11
1 Introduccedilatildeo
11 Contextualizaccedilatildeo e Motivaccedilatildeo
A Era Digital tem inserido novas e importantes regras que regem a so-
ciedade moderna e o atual panorama socioeconocircmico Globalizaccedilatildeo competi-
ccedilatildeo informaccedilatildeo em grandes quantidades mudanccedilas constantes em curto espaccedilo
de tempo variedades de opccedilotildees e vaacuterios outros termos e efeitos dessa Era tecircm
surgido ao longo do tempo
Com a evoluccedilatildeo das tecnologias e o advento da Internet o comeacutercio se
modificou atraveacutes do surgimento do comeacutercio online tambeacutem chamado de e-
commerce ou comeacutercio virtual O consumidor antes limitado por barreiras ge-
ograacuteficas passou a ter acesso a um maior conjunto de lojas produtos e serviccedilos
atraveacutes da web
Segundo dados da empresa e-bit o comeacutercio eletrocircnico brasileiro alcan-
ccedilou um faturamento de R$ 187 bilhotildees em 2011 Um aumento de 26 em relaccedilatildeo
ao ano anterior quando o faturamento foi de R$ 148 bilhotildees O nuacutemero de consu-
midores que compraram pela web ao menos uma vez eacute de 32 milhotildees e apenas no
ano de 2011 foram efetuados 537 milhotildees de pedidos atraveacutes de 5000 lojas online
(EBIT 2011)
Atraveacutes das milhares de lojas o consumidor passou a ter mais opccedilotildees in-
formaccedilotildees e ofertas do que nunca Ele pode optar por fazer suas compras em gran-
des redes lojas virtuais especializadas cataacutelogos virtuais dentre outros meios E eacute
bombardeado com mensagens por diversos canais televisatildeo Internet raacutedio redes
sociais miacutedia impressa etc (MCKENNA 1999)
No entanto devido agrave imensuraacutevel quantidade de anuacutencios disponiacuteveis a
tarefa de escolher o produto desejado pelo melhor preccedilo torna-se demasiadamente
12
custosa Como um exemplo simples suponha-se um consumidor que deseja adqui-
rir uma TV LCD ele deve selecionar uma quantidade finita de lojas que conhece
buscar o produto desejado em cada loja e por fim cruzar os dados obtidos a fim
de encontrar o melhor custo-benefiacutecio Embora tal tarefa possa parecer simploacute-
ria ela se torna cada vez mais complexa agrave medida que mais lojas satildeo incluiacutedas na
pesquisa
Serviccedilos de Shopping Comparison se propotildeem a resolver esse problema
atraveacutes de um serviccedilo online baseado na web os consumidores podem encontrar
produtos preccedilos e outras informaccedilotildees de muacuteltiplas lojas online ao inveacutes de visitar
cada uma separadamente Os preccedilos e produtos satildeo apresentados na mesma inter-
face e o consumidor pode tomar a melhor decisatildeo sendo entatildeo redirecionado para
o fornecedor do produto para completar a transaccedilatildeo (WAN 2009)
Para que tais dados sejam apresentados eacute necessaacuterio que um agente de pes-
quisa de preccedilos chamado de Shopbot automaticamente pesquise uma coleccedilatildeo de
lojas online para coletar e comparar dados de um produto especificado (ZHANG
JING 2011) Entretanto natildeo existe uma padronizaccedilatildeo para a exibiccedilatildeo dos dados
dos produtos cada loja possui seu proacuteprio layout organizaccedilatildeo estrutural tecnolo-
gias etc Portanto desenvolver um bom agente de comparaccedilatildeo (shopbot) capaz
de coletar dados de muacuteltiplas fontes se torna uma tarefa natildeo trivial
A tarefa de descobrimento e anaacutelise de informaccedilotildees uacuteteis da World Wide
Web atraveacutes da busca automaacutetica de informaccedilatildeo de recursos disponiacuteveis online eacute
a definiccedilatildeo de Web Mining (COOLEY MOBASHER SRIVASTAVA 1997) Sendo este
trabalho portanto pertencente a essa linha de pesquisa
13
12 Objetivos
Este trabalho elabora um conjunto de regras e procedimentos para a de-
tecccedilatildeo de padrotildees identificaccedilatildeo de atributos extraccedilatildeo de dados em lojas de e-
commerce e geraccedilatildeo de um modelo geneacuterico e reaproveitaacutevel para cada fonte de
dados
Objetiva-se mensurar a eficiecircncia do modelo proposto em extrair dados
de produtos atraveacutes da implementaccedilatildeo de um protoacutetipo de shopbot que aplica tais
regras e procedimentos em uma aplicaccedilatildeo de Shopping Comparison
13 Organizaccedilatildeo do Trabalho
Este trabalho estaacute organizado da seguinte maneira
bull Os capiacutetulos 2 3 e 4 constituem o Referencial Teoacuterico deste trabalho No
capiacutetulo 2 tem-se a apresentaccedilatildeo de conceitos de HTML No capiacutetulo 3 eacute
realizada uma apresentaccedilatildeo sobre conceitos de Web Mining focando-se em
Web Content Mining Por fim no capiacutetulo 4 eacute dada uma definiccedilatildeo de Shop-
ping Comparison e Shopbot aleacutem dos seus impactos no comeacutercio online
bull O capiacutetulo 5 descreve a Metodologia utilizada no trabalho definindo os pro-
cedimentos metodoloacutegicos e as tecnologias utilizadas
bull No capiacutetulo 6 satildeo apresentados com detalhes as regras e procedimentos utili-
zados na construccedilatildeo do protoacutetipo de shopbot proposto neste trabalho desde
a elaboraccedilatildeo do algoritmo ateacute a interface do serviccedilo de Shopping Compari-
son
bull O capiacutetulo 7 conteacutem os resultados obtidos e algumas discussotildees a respeito
do que foi atingido
14
2 Linguagem HTML
A World Wide Web eacute uma imensa rede de informaccedilotildees Segundo o World
Wide Web Consortium a principal organizaccedilatildeo de padrotildees para a Internet a Web se
baseia em trecircs mecanismos que tornam esses recursos disponiacuteveis para o puacuteblico
mais amplo possiacutevel (CONSORTIUM 1999)
1 Um esquema de nomenclatura uniforme para a localizaccedilatildeo de recursos pre-
sentes na Web Ex Universal Resource Identifier ou URI
2 Protocolos para acesso agrave recursos nomeados na Web Ex Hypertext Trans-
fer Protocol ou HTTP
3 Hypertext para a faacutecil navegaccedilatildeo entre esses recursos Ex HTML
HTML que eacute usado para navegar entre os recursos da Web eacute tratado na
seccedilatildeo seguinte
21 HTML
HyperText Markup Language (HTML) eacute a liacutengua franca para publicaccedilatildeo
de conteuacutedo na World Wide Web Eacute um formato natildeo-proprietaacuterio que pode ser cri-
ado e processado por uma ampla variedade de ferramentas desde simples editores
de texto agrave ferramentas mais complexas de autoraccedilatildeo HTML usa tags como ltpgt
e ltpgt para estruturar o texto em tiacutetulos paraacutegrafos listas blocos imagens links
para outros documentos etc (CONSORTIUM 2010)
Um breve coacutedigo ou documento HTML eacute exibido abaixo
ltDOCTYPE html PUBLIC -W3CDTD XHTML 10 StrictEN
httpwwww3orgTRxhtml1DTDxhtml1-strictdtdgt
lthtml xmlns=httpwwww3org1999xhtml xmllang=en lang=engt
15
lthead gt
lttitle gtTitulo da Pagina HTML lttitle gt
lthead gt
ltbody gt
ltdiv id=conteudo class=blocogt
lth1gtTitulo do Texto lth1gt
ltpgtParagrafo contendo textoltpgt
ltpgtSegundo paragrafo com mais textoltpgt
ltdivgt
ltdiv class=blocogt
ltpgtltstrong gtTexto em negritoltstrong gtltpgt
ltpgtltemgtTexto em italicoltemgtltpgt
ltdivgt
ltbody gt
lthtml gt
A interpretaccedilatildeo desse coacutedigo pelo browser Google Chrome eacute exibido na
FIGURA 1
Figura 1 Interpretaccedilatildeo de coacutedigo HTML pelo browser Google Chrome
16
Apesar do HTML possuir uma grande quantidade de tags para formataccedilatildeo
de documentos existe uma limitaccedilatildeo histoacuterica em seu projeto as tags usadas satildeo
semi-estruturadas elas apenas descrevem como a informaccedilatildeo deve ser exibida mas
natildeo do que se trata os dados (WAN 2009) Dessa forma natildeo eacute uma linguagem
semacircntica que pode ter sua informaccedilatildeo trivialmente extraiacuteda e interpretada por
agentes computacionais
22 Document Object Model
Document Object Model abreviadamente chamado de DOM eacute uma in-
terface de programaccedilatildeo de aplicaccedilotildees ou API para documentos HTML vaacutelidos e
XML corretamente formatados Ela define a estrutura loacutegica dos documentos e a
maneira como seratildeo acessados e manipulados Atraveacutes da DOM programadores
podem construir documentos navegar pela sua estrutura adicionar modificar ou
remover elementos e conteuacutedo (ROBIE et al 2000)
Como eacute uma especificaccedilatildeo do World Wide Web Consortium ou W3C o
objetivo da Document Object Model eacute fornecer uma API padratildeo que possa ser
usada por uma ampla variedade de linguagens de programaccedilatildeo
No DOM os documentos tem uma estrutura loacutegica que eacute muito parecida
com uma aacutervore mais precisamente uma ldquoflorestardquo que eacute um conjunto de aacutervo-
res Cada documento conteacutem zero ou um noacute de declaraccedilatildeo de tipo de documento
(DOCTYPE) um noacute raiz e zero ou mais instruccedilotildees de processamento e comentaacute-
rios O elemento raiz funciona como o noacute raiz da aacutervore do documento (ROBIE et
al 2000)
Como exemplo considere o coacutedigo HTML apresentado na seccedilatildeo anterior
A aacutervore DOM deste documento eacute apresentada na FIGURA 2 Atraveacutes da manipu-
laccedilatildeo desta aacutervore eacute possiacutevel adicionar novos elementos atraveacutes da simples adiccedilatildeo
17
de novos noacutes agrave estrutura remover elementos atraveacutes da remoccedilatildeo de noacutes e editar
conteuacutedo textuais ou estruturais seja alterando textos ou modificando noacutes
Figura 2 Reproduccedilatildeo de uma aacutervore DOM para um documento HTML
Eacute facilmente perceptiacutevel que a API DOM eacute de suma importacircncia na anaacutelise
de conteuacutedos provenientes da World Wide Web
23 Seletores CSS
Cascading Style Sheets (CSS) eacute uma linguagem de estilo utilizada para
descrever a apresentaccedilatildeo de paacuteginas Web incluindo cores layouts fonte etc (CON-
SORTIUM 2011) Para que os elementos possam ser estilizados existem regras de
correspondecircncia para determinar quais regras se aplicam a elementos da aacutervore
DOM (BOS et al 2011)
18
Um simples exemplo de um documento CSS eacute apresentado a seguir con-
tendo alguns seletores
font -size 12px
h1
color red
p
color black
O CSS acima especifica atraveacutes do uso do seletor ldquordquo que qualquer ele-
mento do documento no qual eacute aplicado deve ter o texto no tamanho de 12 pixels
todos os elementos do tipo ldquoh1rdquo teratildeo o texto da cor vermelha e os elementos do
tipo ldquoprdquo teratildeo a cor preta especificados atraveacutes do uso de seletores homocircnimos a
esses elementos Na Quadro 1 eacute apresentada a sintaxe de alguns seletores CSS da
especificaccedilatildeo 21
Eacute importante ressaltar que seletores CSS natildeo satildeo usados unicamente para
definir estilos para paacuteginas Web Eles tambeacutem satildeo usados na navegaccedilatildeo pela aacutervore
DOM para que atributos e conteuacutedos dos noacutes possam ser recuperados modificados
ou excluiacutedos de forma mais dinacircmica Por exemplo na aacutervore DOM exibida na
FIGURA 2 o seletor ldquoconteudordquo retornaria o noacute ldquoltdivgtrdquo mais agrave esquerda
24 HTML Parsers
Um HTML Parser eacute uma ferramenta que cria uma aacutervore DOM a partir
da anaacutelise de um coacutedigo HTML (NYEIN 2011) O analisador eacute capaz de detectar
e corrigir vaacuterios erros de sintaxe HTML em documentos mal formatados (YANG
ZHANG TSAI 2008)
19
Padratildeo Significado Corresponde a qualquer ele-
mentoE Corresponde a qualquer ele-
mento E (isto eacute um elemento dotipo E)
E F Corresponde a qualquer ele-mento F que eacute descendente deum elemento E
E gt F Corresponde a qualquer ele-mento F que eacute filho do elementoE
Efirst-child Corresponde agrave primeira ocorrecircn-cia do elemento E
Ewarning Corresponde a qualquer ele-mento do tipo E que possui aclasse ldquowarningrdquo
Emyid Corresponde a qualquer ele-mento E que possui o ID ldquomyidrdquo
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011)
Normalmente eacute disponibilizada uma interface para que a aacutervore DOM
possa ser navegada Alguns parsers permitem que essa funccedilatildeo seja realizada atra-
veacutes de seletores CSS aleacutem de prover meacutetodos que permitem manipular e recuperar
informaccedilotildees de noacutes
Neste trabalho eacute utilizado o analisador de HTML phpQuery Eacute uma fer-
ramenta server-side orientado a seletores CSS3 e com meacutetodos para recuperaccedilatildeo
e manipulaccedilatildeo do Document Object Model (CUDNIK 2009)
20
3 Web Mining
Textos viacutedeos imagens e sons satildeo publicados e compartilhados a todo
momento e em todas as partes do mundo atraveacutes da World Wide Web O acompa-
nhamento absorccedilatildeo e compreensatildeo dessa imensuraacutevel quantidade de informaccedilatildeo
eacute uma tarefa impraticaacutevel ainda que em um niacutevel micro Por isso o conceito de
Web Mining foi criado por pesquisadores
Web Mining derivado da expressatildeo Data Mining pode ser amplamente
definido como a descoberta e anaacutelise de informaccedilatildeo uacutetil da World Wide Web (COO-
LEY MOBASHER SRIVASTAVA 1997)
Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e Srivastava(1997) Juacutenior (2007)
Uma taxonomia da Web Mining eacute apresentado na FIGURA 3 Nos paragraacute-
fos seguintes tem-se uma breve explicaccedilatildeo sobre cada subtoacutepico nela apresentada
sem se estender ateacute os noacutes do terceiro niacutevel
21
Web Structure Mining (Mineraccedilatildeo da Estrutura da Web) se refere ao pro-
cesso de descoberta de conhecimento atraveacutes da relaccedilatildeo entre os documentos con-
tidos na Web
Web Usage Mining (Mineraccedilatildeo do Uso da Web) analisa o padratildeo de com-
portamento de usuaacuterios na Web Como exemplo simples pode ser citado a desco-
berta de padrotildees no acesso de usuaacuterios a um determinado site em um Web server
Por fim Web Content Mining eacute tratado no subcapiacutetulo seguinte
31 Web Content Mining
Web Content Mining (Mineraccedilatildeo do Conteuacutedo da Web) eacute o processo de
extraccedilatildeo de informaccedilatildeo do conteuacutedo de documentos e seus metadados (palavras-
chave informaccedilotildees sobre produtos imagens etc) Apesar deste enfoque abranger
principalmente documentos HTML ele se estende a formatos natildeo-textuais como
imagens e viacutedeos (SANTOS 2009) Segundo Cooley Mobasher e Srivastava (1997)
Web Content Mining pode ser dividido em trecircs abordagens explicadas a seguir
A primeira delas Agent Based Approach em portuguecircs Abordagem Base-
ada em Agentes pode ser dividida nas seguintes categorias
bull Intelligent Search Agents (Agentes Inteligentes de Busca) sistemas que bus-
cam por dados relevantes organizando e interpretando a informaccedilatildeo desco-
berta FAQ-Finder (HAMMOND et al 1995) e BargainFinder (WAN PENG
2010) satildeo dois exemplos claacutessicos dessa categoria
bull Information FilteringCategorization (FiltragemCategorizaccedilatildeo de Informa-
ccedilatildeo) agentes que usam uma variedade de teacutecnicas de recuperaccedilatildeo de infor-
maccedilatildeo e caracteriacutesticas de documentos da Web para automaticamente ob-
ter filtrar e organizar a informaccedilatildeo BO (Bookmark Organizer) (MAAREK
SHAUL 1996) eacute um exemplo desse tipo de aplicaccedilatildeo tendo em vista que
22
ele organiza coleccedilotildees de documentos da Web baseados na sua informaccedilatildeo
conceitual
bull Personalized Web Agents (Agentes Web Personalizados) satildeo agentes que
aprendem as preferecircncias do usuaacuterio e descobrem informaccedilotildees da Web ba-
seada nessas preferecircncas (COOLEY MOBASHER SRIVASTAVA 1997)
A segunda abordagem Database Approach (Abordagem de Database)
foca em teacutecnicas para organizaccedilatildeo da informaccedilatildeo semi-estruturada da Web em
dados mais estruturados usando mecanismos padrotildees de consulta agrave databases e
teacutecnicas de data mining para anaacutelise Pode ser dividido em duas categorias
bull Multilevel Databases (Databases Multiniacuteveis) a principal ideia dessa abor-
dagem eacute que o niacutevel mais baixo da database contenha informaccedilatildeo semi-
estruturada armazenada em vaacuterios repositoacuterios Web Nos niacuteveis mais altos
meta dados ou generalizaccedilotildees satildeo extraiacutedos dos niacuteveis mais baixos e orga-
nizados em coleccedilotildees estruturadas como databases relacionais orientadas a
objetos (COOLEY MOBASHER SRIVASTAVA 1997)
bull Web Query Systems (Sistemas de Consultas Web) sistemas que utilizam
padrotildees de consultas a databases ou a informaccedilotildees estruturais sobre docu-
mentos Web e ateacute processadores de linguagens naturais para processar as
consultas que satildeo realizadas nas buscas na Internet (COOLEY MOBASHER
SRIVASTAVA 1997)
Este trabalho estaacute situado na aacuterea de Web Content Mining especificamente
na Abordagem Baseada em Agentes na categoria de Agentes Inteligentes de Busca
visto que o conteuacutedo presente no HTML de paacuteginas de e-commerce seratildeo anali-
sados por um robocirc de busca inteligente que coletaraacute e organizaraacute a informaccedilatildeo
relevante
23
32 Wrapper
A World Wide Web natildeo eacute estruturada de forma a apresentar informaccedilotildees
que possam ser lidas por maacutequinas A maioria da imensuraacutevel quantidade de dados
presente na Web estaacute apresentada em estruturas fracamente semacircnticas que natildeo po-
dem ser compreendidas por agentes (DOORENBOS ETZIONI WELD 1997) Faz-se
necessaacuterio entatildeo uma regra de traduccedilatildeo para cada fonte de dados A esse ldquotradutorrdquo
eacute dado o nome de wrapper (KUSHMERICK 1997 COWIE LEHNERT 1996)
Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers Fonte Yanget al (2000)
Formalmente um wrapper eacute um programa agente ou conjunto de regras
que entende a informaccedilatildeo de uma fonte e a traduz em uma forma regular e compre-
ensiacutevel que pode ser usada por outros agentes Um wrapper eacute especializado apenas
em uma uacutenica fonte de informaccedilotildees (YANG et al 2000) A FIGURA 4 mostra um
sistema de integraccedilatildeo de informaccedilotildees usando vaacuterios wrappers cada um para uma
fonte especiacutefica de informaccedilatildeo
24
Segundo Firat (2003) wrappers podem ser divididos em trecircs tipos baseado
no seu niacutevel de automaccedilatildeo
bull Manual codificar manualmente um wrapper normalmente eacute uma tarefa
tediosa e em alguns casos impraticaacutevel O nuacutemero de fontes de dados pode
ser muito grande ou crescer rapidamente e a estrutura e o conteuacutedo da fonte
pode frequentemente mudar Todos esses fatores tornam essa tarefa manual
altamente custosa e demorada (TATBUL et al 2001)
bull Semi-automaacutetico (interativo) em alguns casos as regras de um wrap-
per que lida com os detalhes especiacuteficos de uma fonte de dados eacute relati-
vamente pequena A outra parte eacute igual em todos os wrappers ou pode ser
gerada semi-automaticamente baseada em uma descriccedilatildeo declarativa dada
pelo usuaacuterio (TATBUL et al 2001)
bull Automaacutetico a geraccedilatildeo automaacutetica de um wrapper significa que natildeo haacute
intervenccedilatildeo humana nesse processo Ferramentas de geraccedilatildeo automaacutetica
podem ser especiacuteficas pra um site ou geneacutericas normalmente necessitam de
um estaacutegio de treinamento e satildeo baseados em algoritmos de aprendizado
supervisionado (TATBUL et al 2001)
Neste trabalho o wrapper gerado seraacute um conjunto de seletores CSS que
especificam quais dados de paacuteginas Web devem ser extraiacutedos gerando informaccedilotildees
relevantes a partir de documentos semi-estruturados
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
12
custosa Como um exemplo simples suponha-se um consumidor que deseja adqui-
rir uma TV LCD ele deve selecionar uma quantidade finita de lojas que conhece
buscar o produto desejado em cada loja e por fim cruzar os dados obtidos a fim
de encontrar o melhor custo-benefiacutecio Embora tal tarefa possa parecer simploacute-
ria ela se torna cada vez mais complexa agrave medida que mais lojas satildeo incluiacutedas na
pesquisa
Serviccedilos de Shopping Comparison se propotildeem a resolver esse problema
atraveacutes de um serviccedilo online baseado na web os consumidores podem encontrar
produtos preccedilos e outras informaccedilotildees de muacuteltiplas lojas online ao inveacutes de visitar
cada uma separadamente Os preccedilos e produtos satildeo apresentados na mesma inter-
face e o consumidor pode tomar a melhor decisatildeo sendo entatildeo redirecionado para
o fornecedor do produto para completar a transaccedilatildeo (WAN 2009)
Para que tais dados sejam apresentados eacute necessaacuterio que um agente de pes-
quisa de preccedilos chamado de Shopbot automaticamente pesquise uma coleccedilatildeo de
lojas online para coletar e comparar dados de um produto especificado (ZHANG
JING 2011) Entretanto natildeo existe uma padronizaccedilatildeo para a exibiccedilatildeo dos dados
dos produtos cada loja possui seu proacuteprio layout organizaccedilatildeo estrutural tecnolo-
gias etc Portanto desenvolver um bom agente de comparaccedilatildeo (shopbot) capaz
de coletar dados de muacuteltiplas fontes se torna uma tarefa natildeo trivial
A tarefa de descobrimento e anaacutelise de informaccedilotildees uacuteteis da World Wide
Web atraveacutes da busca automaacutetica de informaccedilatildeo de recursos disponiacuteveis online eacute
a definiccedilatildeo de Web Mining (COOLEY MOBASHER SRIVASTAVA 1997) Sendo este
trabalho portanto pertencente a essa linha de pesquisa
13
12 Objetivos
Este trabalho elabora um conjunto de regras e procedimentos para a de-
tecccedilatildeo de padrotildees identificaccedilatildeo de atributos extraccedilatildeo de dados em lojas de e-
commerce e geraccedilatildeo de um modelo geneacuterico e reaproveitaacutevel para cada fonte de
dados
Objetiva-se mensurar a eficiecircncia do modelo proposto em extrair dados
de produtos atraveacutes da implementaccedilatildeo de um protoacutetipo de shopbot que aplica tais
regras e procedimentos em uma aplicaccedilatildeo de Shopping Comparison
13 Organizaccedilatildeo do Trabalho
Este trabalho estaacute organizado da seguinte maneira
bull Os capiacutetulos 2 3 e 4 constituem o Referencial Teoacuterico deste trabalho No
capiacutetulo 2 tem-se a apresentaccedilatildeo de conceitos de HTML No capiacutetulo 3 eacute
realizada uma apresentaccedilatildeo sobre conceitos de Web Mining focando-se em
Web Content Mining Por fim no capiacutetulo 4 eacute dada uma definiccedilatildeo de Shop-
ping Comparison e Shopbot aleacutem dos seus impactos no comeacutercio online
bull O capiacutetulo 5 descreve a Metodologia utilizada no trabalho definindo os pro-
cedimentos metodoloacutegicos e as tecnologias utilizadas
bull No capiacutetulo 6 satildeo apresentados com detalhes as regras e procedimentos utili-
zados na construccedilatildeo do protoacutetipo de shopbot proposto neste trabalho desde
a elaboraccedilatildeo do algoritmo ateacute a interface do serviccedilo de Shopping Compari-
son
bull O capiacutetulo 7 conteacutem os resultados obtidos e algumas discussotildees a respeito
do que foi atingido
14
2 Linguagem HTML
A World Wide Web eacute uma imensa rede de informaccedilotildees Segundo o World
Wide Web Consortium a principal organizaccedilatildeo de padrotildees para a Internet a Web se
baseia em trecircs mecanismos que tornam esses recursos disponiacuteveis para o puacuteblico
mais amplo possiacutevel (CONSORTIUM 1999)
1 Um esquema de nomenclatura uniforme para a localizaccedilatildeo de recursos pre-
sentes na Web Ex Universal Resource Identifier ou URI
2 Protocolos para acesso agrave recursos nomeados na Web Ex Hypertext Trans-
fer Protocol ou HTTP
3 Hypertext para a faacutecil navegaccedilatildeo entre esses recursos Ex HTML
HTML que eacute usado para navegar entre os recursos da Web eacute tratado na
seccedilatildeo seguinte
21 HTML
HyperText Markup Language (HTML) eacute a liacutengua franca para publicaccedilatildeo
de conteuacutedo na World Wide Web Eacute um formato natildeo-proprietaacuterio que pode ser cri-
ado e processado por uma ampla variedade de ferramentas desde simples editores
de texto agrave ferramentas mais complexas de autoraccedilatildeo HTML usa tags como ltpgt
e ltpgt para estruturar o texto em tiacutetulos paraacutegrafos listas blocos imagens links
para outros documentos etc (CONSORTIUM 2010)
Um breve coacutedigo ou documento HTML eacute exibido abaixo
ltDOCTYPE html PUBLIC -W3CDTD XHTML 10 StrictEN
httpwwww3orgTRxhtml1DTDxhtml1-strictdtdgt
lthtml xmlns=httpwwww3org1999xhtml xmllang=en lang=engt
15
lthead gt
lttitle gtTitulo da Pagina HTML lttitle gt
lthead gt
ltbody gt
ltdiv id=conteudo class=blocogt
lth1gtTitulo do Texto lth1gt
ltpgtParagrafo contendo textoltpgt
ltpgtSegundo paragrafo com mais textoltpgt
ltdivgt
ltdiv class=blocogt
ltpgtltstrong gtTexto em negritoltstrong gtltpgt
ltpgtltemgtTexto em italicoltemgtltpgt
ltdivgt
ltbody gt
lthtml gt
A interpretaccedilatildeo desse coacutedigo pelo browser Google Chrome eacute exibido na
FIGURA 1
Figura 1 Interpretaccedilatildeo de coacutedigo HTML pelo browser Google Chrome
16
Apesar do HTML possuir uma grande quantidade de tags para formataccedilatildeo
de documentos existe uma limitaccedilatildeo histoacuterica em seu projeto as tags usadas satildeo
semi-estruturadas elas apenas descrevem como a informaccedilatildeo deve ser exibida mas
natildeo do que se trata os dados (WAN 2009) Dessa forma natildeo eacute uma linguagem
semacircntica que pode ter sua informaccedilatildeo trivialmente extraiacuteda e interpretada por
agentes computacionais
22 Document Object Model
Document Object Model abreviadamente chamado de DOM eacute uma in-
terface de programaccedilatildeo de aplicaccedilotildees ou API para documentos HTML vaacutelidos e
XML corretamente formatados Ela define a estrutura loacutegica dos documentos e a
maneira como seratildeo acessados e manipulados Atraveacutes da DOM programadores
podem construir documentos navegar pela sua estrutura adicionar modificar ou
remover elementos e conteuacutedo (ROBIE et al 2000)
Como eacute uma especificaccedilatildeo do World Wide Web Consortium ou W3C o
objetivo da Document Object Model eacute fornecer uma API padratildeo que possa ser
usada por uma ampla variedade de linguagens de programaccedilatildeo
No DOM os documentos tem uma estrutura loacutegica que eacute muito parecida
com uma aacutervore mais precisamente uma ldquoflorestardquo que eacute um conjunto de aacutervo-
res Cada documento conteacutem zero ou um noacute de declaraccedilatildeo de tipo de documento
(DOCTYPE) um noacute raiz e zero ou mais instruccedilotildees de processamento e comentaacute-
rios O elemento raiz funciona como o noacute raiz da aacutervore do documento (ROBIE et
al 2000)
Como exemplo considere o coacutedigo HTML apresentado na seccedilatildeo anterior
A aacutervore DOM deste documento eacute apresentada na FIGURA 2 Atraveacutes da manipu-
laccedilatildeo desta aacutervore eacute possiacutevel adicionar novos elementos atraveacutes da simples adiccedilatildeo
17
de novos noacutes agrave estrutura remover elementos atraveacutes da remoccedilatildeo de noacutes e editar
conteuacutedo textuais ou estruturais seja alterando textos ou modificando noacutes
Figura 2 Reproduccedilatildeo de uma aacutervore DOM para um documento HTML
Eacute facilmente perceptiacutevel que a API DOM eacute de suma importacircncia na anaacutelise
de conteuacutedos provenientes da World Wide Web
23 Seletores CSS
Cascading Style Sheets (CSS) eacute uma linguagem de estilo utilizada para
descrever a apresentaccedilatildeo de paacuteginas Web incluindo cores layouts fonte etc (CON-
SORTIUM 2011) Para que os elementos possam ser estilizados existem regras de
correspondecircncia para determinar quais regras se aplicam a elementos da aacutervore
DOM (BOS et al 2011)
18
Um simples exemplo de um documento CSS eacute apresentado a seguir con-
tendo alguns seletores
font -size 12px
h1
color red
p
color black
O CSS acima especifica atraveacutes do uso do seletor ldquordquo que qualquer ele-
mento do documento no qual eacute aplicado deve ter o texto no tamanho de 12 pixels
todos os elementos do tipo ldquoh1rdquo teratildeo o texto da cor vermelha e os elementos do
tipo ldquoprdquo teratildeo a cor preta especificados atraveacutes do uso de seletores homocircnimos a
esses elementos Na Quadro 1 eacute apresentada a sintaxe de alguns seletores CSS da
especificaccedilatildeo 21
Eacute importante ressaltar que seletores CSS natildeo satildeo usados unicamente para
definir estilos para paacuteginas Web Eles tambeacutem satildeo usados na navegaccedilatildeo pela aacutervore
DOM para que atributos e conteuacutedos dos noacutes possam ser recuperados modificados
ou excluiacutedos de forma mais dinacircmica Por exemplo na aacutervore DOM exibida na
FIGURA 2 o seletor ldquoconteudordquo retornaria o noacute ldquoltdivgtrdquo mais agrave esquerda
24 HTML Parsers
Um HTML Parser eacute uma ferramenta que cria uma aacutervore DOM a partir
da anaacutelise de um coacutedigo HTML (NYEIN 2011) O analisador eacute capaz de detectar
e corrigir vaacuterios erros de sintaxe HTML em documentos mal formatados (YANG
ZHANG TSAI 2008)
19
Padratildeo Significado Corresponde a qualquer ele-
mentoE Corresponde a qualquer ele-
mento E (isto eacute um elemento dotipo E)
E F Corresponde a qualquer ele-mento F que eacute descendente deum elemento E
E gt F Corresponde a qualquer ele-mento F que eacute filho do elementoE
Efirst-child Corresponde agrave primeira ocorrecircn-cia do elemento E
Ewarning Corresponde a qualquer ele-mento do tipo E que possui aclasse ldquowarningrdquo
Emyid Corresponde a qualquer ele-mento E que possui o ID ldquomyidrdquo
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011)
Normalmente eacute disponibilizada uma interface para que a aacutervore DOM
possa ser navegada Alguns parsers permitem que essa funccedilatildeo seja realizada atra-
veacutes de seletores CSS aleacutem de prover meacutetodos que permitem manipular e recuperar
informaccedilotildees de noacutes
Neste trabalho eacute utilizado o analisador de HTML phpQuery Eacute uma fer-
ramenta server-side orientado a seletores CSS3 e com meacutetodos para recuperaccedilatildeo
e manipulaccedilatildeo do Document Object Model (CUDNIK 2009)
20
3 Web Mining
Textos viacutedeos imagens e sons satildeo publicados e compartilhados a todo
momento e em todas as partes do mundo atraveacutes da World Wide Web O acompa-
nhamento absorccedilatildeo e compreensatildeo dessa imensuraacutevel quantidade de informaccedilatildeo
eacute uma tarefa impraticaacutevel ainda que em um niacutevel micro Por isso o conceito de
Web Mining foi criado por pesquisadores
Web Mining derivado da expressatildeo Data Mining pode ser amplamente
definido como a descoberta e anaacutelise de informaccedilatildeo uacutetil da World Wide Web (COO-
LEY MOBASHER SRIVASTAVA 1997)
Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e Srivastava(1997) Juacutenior (2007)
Uma taxonomia da Web Mining eacute apresentado na FIGURA 3 Nos paragraacute-
fos seguintes tem-se uma breve explicaccedilatildeo sobre cada subtoacutepico nela apresentada
sem se estender ateacute os noacutes do terceiro niacutevel
21
Web Structure Mining (Mineraccedilatildeo da Estrutura da Web) se refere ao pro-
cesso de descoberta de conhecimento atraveacutes da relaccedilatildeo entre os documentos con-
tidos na Web
Web Usage Mining (Mineraccedilatildeo do Uso da Web) analisa o padratildeo de com-
portamento de usuaacuterios na Web Como exemplo simples pode ser citado a desco-
berta de padrotildees no acesso de usuaacuterios a um determinado site em um Web server
Por fim Web Content Mining eacute tratado no subcapiacutetulo seguinte
31 Web Content Mining
Web Content Mining (Mineraccedilatildeo do Conteuacutedo da Web) eacute o processo de
extraccedilatildeo de informaccedilatildeo do conteuacutedo de documentos e seus metadados (palavras-
chave informaccedilotildees sobre produtos imagens etc) Apesar deste enfoque abranger
principalmente documentos HTML ele se estende a formatos natildeo-textuais como
imagens e viacutedeos (SANTOS 2009) Segundo Cooley Mobasher e Srivastava (1997)
Web Content Mining pode ser dividido em trecircs abordagens explicadas a seguir
A primeira delas Agent Based Approach em portuguecircs Abordagem Base-
ada em Agentes pode ser dividida nas seguintes categorias
bull Intelligent Search Agents (Agentes Inteligentes de Busca) sistemas que bus-
cam por dados relevantes organizando e interpretando a informaccedilatildeo desco-
berta FAQ-Finder (HAMMOND et al 1995) e BargainFinder (WAN PENG
2010) satildeo dois exemplos claacutessicos dessa categoria
bull Information FilteringCategorization (FiltragemCategorizaccedilatildeo de Informa-
ccedilatildeo) agentes que usam uma variedade de teacutecnicas de recuperaccedilatildeo de infor-
maccedilatildeo e caracteriacutesticas de documentos da Web para automaticamente ob-
ter filtrar e organizar a informaccedilatildeo BO (Bookmark Organizer) (MAAREK
SHAUL 1996) eacute um exemplo desse tipo de aplicaccedilatildeo tendo em vista que
22
ele organiza coleccedilotildees de documentos da Web baseados na sua informaccedilatildeo
conceitual
bull Personalized Web Agents (Agentes Web Personalizados) satildeo agentes que
aprendem as preferecircncias do usuaacuterio e descobrem informaccedilotildees da Web ba-
seada nessas preferecircncas (COOLEY MOBASHER SRIVASTAVA 1997)
A segunda abordagem Database Approach (Abordagem de Database)
foca em teacutecnicas para organizaccedilatildeo da informaccedilatildeo semi-estruturada da Web em
dados mais estruturados usando mecanismos padrotildees de consulta agrave databases e
teacutecnicas de data mining para anaacutelise Pode ser dividido em duas categorias
bull Multilevel Databases (Databases Multiniacuteveis) a principal ideia dessa abor-
dagem eacute que o niacutevel mais baixo da database contenha informaccedilatildeo semi-
estruturada armazenada em vaacuterios repositoacuterios Web Nos niacuteveis mais altos
meta dados ou generalizaccedilotildees satildeo extraiacutedos dos niacuteveis mais baixos e orga-
nizados em coleccedilotildees estruturadas como databases relacionais orientadas a
objetos (COOLEY MOBASHER SRIVASTAVA 1997)
bull Web Query Systems (Sistemas de Consultas Web) sistemas que utilizam
padrotildees de consultas a databases ou a informaccedilotildees estruturais sobre docu-
mentos Web e ateacute processadores de linguagens naturais para processar as
consultas que satildeo realizadas nas buscas na Internet (COOLEY MOBASHER
SRIVASTAVA 1997)
Este trabalho estaacute situado na aacuterea de Web Content Mining especificamente
na Abordagem Baseada em Agentes na categoria de Agentes Inteligentes de Busca
visto que o conteuacutedo presente no HTML de paacuteginas de e-commerce seratildeo anali-
sados por um robocirc de busca inteligente que coletaraacute e organizaraacute a informaccedilatildeo
relevante
23
32 Wrapper
A World Wide Web natildeo eacute estruturada de forma a apresentar informaccedilotildees
que possam ser lidas por maacutequinas A maioria da imensuraacutevel quantidade de dados
presente na Web estaacute apresentada em estruturas fracamente semacircnticas que natildeo po-
dem ser compreendidas por agentes (DOORENBOS ETZIONI WELD 1997) Faz-se
necessaacuterio entatildeo uma regra de traduccedilatildeo para cada fonte de dados A esse ldquotradutorrdquo
eacute dado o nome de wrapper (KUSHMERICK 1997 COWIE LEHNERT 1996)
Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers Fonte Yanget al (2000)
Formalmente um wrapper eacute um programa agente ou conjunto de regras
que entende a informaccedilatildeo de uma fonte e a traduz em uma forma regular e compre-
ensiacutevel que pode ser usada por outros agentes Um wrapper eacute especializado apenas
em uma uacutenica fonte de informaccedilotildees (YANG et al 2000) A FIGURA 4 mostra um
sistema de integraccedilatildeo de informaccedilotildees usando vaacuterios wrappers cada um para uma
fonte especiacutefica de informaccedilatildeo
24
Segundo Firat (2003) wrappers podem ser divididos em trecircs tipos baseado
no seu niacutevel de automaccedilatildeo
bull Manual codificar manualmente um wrapper normalmente eacute uma tarefa
tediosa e em alguns casos impraticaacutevel O nuacutemero de fontes de dados pode
ser muito grande ou crescer rapidamente e a estrutura e o conteuacutedo da fonte
pode frequentemente mudar Todos esses fatores tornam essa tarefa manual
altamente custosa e demorada (TATBUL et al 2001)
bull Semi-automaacutetico (interativo) em alguns casos as regras de um wrap-
per que lida com os detalhes especiacuteficos de uma fonte de dados eacute relati-
vamente pequena A outra parte eacute igual em todos os wrappers ou pode ser
gerada semi-automaticamente baseada em uma descriccedilatildeo declarativa dada
pelo usuaacuterio (TATBUL et al 2001)
bull Automaacutetico a geraccedilatildeo automaacutetica de um wrapper significa que natildeo haacute
intervenccedilatildeo humana nesse processo Ferramentas de geraccedilatildeo automaacutetica
podem ser especiacuteficas pra um site ou geneacutericas normalmente necessitam de
um estaacutegio de treinamento e satildeo baseados em algoritmos de aprendizado
supervisionado (TATBUL et al 2001)
Neste trabalho o wrapper gerado seraacute um conjunto de seletores CSS que
especificam quais dados de paacuteginas Web devem ser extraiacutedos gerando informaccedilotildees
relevantes a partir de documentos semi-estruturados
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
13
12 Objetivos
Este trabalho elabora um conjunto de regras e procedimentos para a de-
tecccedilatildeo de padrotildees identificaccedilatildeo de atributos extraccedilatildeo de dados em lojas de e-
commerce e geraccedilatildeo de um modelo geneacuterico e reaproveitaacutevel para cada fonte de
dados
Objetiva-se mensurar a eficiecircncia do modelo proposto em extrair dados
de produtos atraveacutes da implementaccedilatildeo de um protoacutetipo de shopbot que aplica tais
regras e procedimentos em uma aplicaccedilatildeo de Shopping Comparison
13 Organizaccedilatildeo do Trabalho
Este trabalho estaacute organizado da seguinte maneira
bull Os capiacutetulos 2 3 e 4 constituem o Referencial Teoacuterico deste trabalho No
capiacutetulo 2 tem-se a apresentaccedilatildeo de conceitos de HTML No capiacutetulo 3 eacute
realizada uma apresentaccedilatildeo sobre conceitos de Web Mining focando-se em
Web Content Mining Por fim no capiacutetulo 4 eacute dada uma definiccedilatildeo de Shop-
ping Comparison e Shopbot aleacutem dos seus impactos no comeacutercio online
bull O capiacutetulo 5 descreve a Metodologia utilizada no trabalho definindo os pro-
cedimentos metodoloacutegicos e as tecnologias utilizadas
bull No capiacutetulo 6 satildeo apresentados com detalhes as regras e procedimentos utili-
zados na construccedilatildeo do protoacutetipo de shopbot proposto neste trabalho desde
a elaboraccedilatildeo do algoritmo ateacute a interface do serviccedilo de Shopping Compari-
son
bull O capiacutetulo 7 conteacutem os resultados obtidos e algumas discussotildees a respeito
do que foi atingido
14
2 Linguagem HTML
A World Wide Web eacute uma imensa rede de informaccedilotildees Segundo o World
Wide Web Consortium a principal organizaccedilatildeo de padrotildees para a Internet a Web se
baseia em trecircs mecanismos que tornam esses recursos disponiacuteveis para o puacuteblico
mais amplo possiacutevel (CONSORTIUM 1999)
1 Um esquema de nomenclatura uniforme para a localizaccedilatildeo de recursos pre-
sentes na Web Ex Universal Resource Identifier ou URI
2 Protocolos para acesso agrave recursos nomeados na Web Ex Hypertext Trans-
fer Protocol ou HTTP
3 Hypertext para a faacutecil navegaccedilatildeo entre esses recursos Ex HTML
HTML que eacute usado para navegar entre os recursos da Web eacute tratado na
seccedilatildeo seguinte
21 HTML
HyperText Markup Language (HTML) eacute a liacutengua franca para publicaccedilatildeo
de conteuacutedo na World Wide Web Eacute um formato natildeo-proprietaacuterio que pode ser cri-
ado e processado por uma ampla variedade de ferramentas desde simples editores
de texto agrave ferramentas mais complexas de autoraccedilatildeo HTML usa tags como ltpgt
e ltpgt para estruturar o texto em tiacutetulos paraacutegrafos listas blocos imagens links
para outros documentos etc (CONSORTIUM 2010)
Um breve coacutedigo ou documento HTML eacute exibido abaixo
ltDOCTYPE html PUBLIC -W3CDTD XHTML 10 StrictEN
httpwwww3orgTRxhtml1DTDxhtml1-strictdtdgt
lthtml xmlns=httpwwww3org1999xhtml xmllang=en lang=engt
15
lthead gt
lttitle gtTitulo da Pagina HTML lttitle gt
lthead gt
ltbody gt
ltdiv id=conteudo class=blocogt
lth1gtTitulo do Texto lth1gt
ltpgtParagrafo contendo textoltpgt
ltpgtSegundo paragrafo com mais textoltpgt
ltdivgt
ltdiv class=blocogt
ltpgtltstrong gtTexto em negritoltstrong gtltpgt
ltpgtltemgtTexto em italicoltemgtltpgt
ltdivgt
ltbody gt
lthtml gt
A interpretaccedilatildeo desse coacutedigo pelo browser Google Chrome eacute exibido na
FIGURA 1
Figura 1 Interpretaccedilatildeo de coacutedigo HTML pelo browser Google Chrome
16
Apesar do HTML possuir uma grande quantidade de tags para formataccedilatildeo
de documentos existe uma limitaccedilatildeo histoacuterica em seu projeto as tags usadas satildeo
semi-estruturadas elas apenas descrevem como a informaccedilatildeo deve ser exibida mas
natildeo do que se trata os dados (WAN 2009) Dessa forma natildeo eacute uma linguagem
semacircntica que pode ter sua informaccedilatildeo trivialmente extraiacuteda e interpretada por
agentes computacionais
22 Document Object Model
Document Object Model abreviadamente chamado de DOM eacute uma in-
terface de programaccedilatildeo de aplicaccedilotildees ou API para documentos HTML vaacutelidos e
XML corretamente formatados Ela define a estrutura loacutegica dos documentos e a
maneira como seratildeo acessados e manipulados Atraveacutes da DOM programadores
podem construir documentos navegar pela sua estrutura adicionar modificar ou
remover elementos e conteuacutedo (ROBIE et al 2000)
Como eacute uma especificaccedilatildeo do World Wide Web Consortium ou W3C o
objetivo da Document Object Model eacute fornecer uma API padratildeo que possa ser
usada por uma ampla variedade de linguagens de programaccedilatildeo
No DOM os documentos tem uma estrutura loacutegica que eacute muito parecida
com uma aacutervore mais precisamente uma ldquoflorestardquo que eacute um conjunto de aacutervo-
res Cada documento conteacutem zero ou um noacute de declaraccedilatildeo de tipo de documento
(DOCTYPE) um noacute raiz e zero ou mais instruccedilotildees de processamento e comentaacute-
rios O elemento raiz funciona como o noacute raiz da aacutervore do documento (ROBIE et
al 2000)
Como exemplo considere o coacutedigo HTML apresentado na seccedilatildeo anterior
A aacutervore DOM deste documento eacute apresentada na FIGURA 2 Atraveacutes da manipu-
laccedilatildeo desta aacutervore eacute possiacutevel adicionar novos elementos atraveacutes da simples adiccedilatildeo
17
de novos noacutes agrave estrutura remover elementos atraveacutes da remoccedilatildeo de noacutes e editar
conteuacutedo textuais ou estruturais seja alterando textos ou modificando noacutes
Figura 2 Reproduccedilatildeo de uma aacutervore DOM para um documento HTML
Eacute facilmente perceptiacutevel que a API DOM eacute de suma importacircncia na anaacutelise
de conteuacutedos provenientes da World Wide Web
23 Seletores CSS
Cascading Style Sheets (CSS) eacute uma linguagem de estilo utilizada para
descrever a apresentaccedilatildeo de paacuteginas Web incluindo cores layouts fonte etc (CON-
SORTIUM 2011) Para que os elementos possam ser estilizados existem regras de
correspondecircncia para determinar quais regras se aplicam a elementos da aacutervore
DOM (BOS et al 2011)
18
Um simples exemplo de um documento CSS eacute apresentado a seguir con-
tendo alguns seletores
font -size 12px
h1
color red
p
color black
O CSS acima especifica atraveacutes do uso do seletor ldquordquo que qualquer ele-
mento do documento no qual eacute aplicado deve ter o texto no tamanho de 12 pixels
todos os elementos do tipo ldquoh1rdquo teratildeo o texto da cor vermelha e os elementos do
tipo ldquoprdquo teratildeo a cor preta especificados atraveacutes do uso de seletores homocircnimos a
esses elementos Na Quadro 1 eacute apresentada a sintaxe de alguns seletores CSS da
especificaccedilatildeo 21
Eacute importante ressaltar que seletores CSS natildeo satildeo usados unicamente para
definir estilos para paacuteginas Web Eles tambeacutem satildeo usados na navegaccedilatildeo pela aacutervore
DOM para que atributos e conteuacutedos dos noacutes possam ser recuperados modificados
ou excluiacutedos de forma mais dinacircmica Por exemplo na aacutervore DOM exibida na
FIGURA 2 o seletor ldquoconteudordquo retornaria o noacute ldquoltdivgtrdquo mais agrave esquerda
24 HTML Parsers
Um HTML Parser eacute uma ferramenta que cria uma aacutervore DOM a partir
da anaacutelise de um coacutedigo HTML (NYEIN 2011) O analisador eacute capaz de detectar
e corrigir vaacuterios erros de sintaxe HTML em documentos mal formatados (YANG
ZHANG TSAI 2008)
19
Padratildeo Significado Corresponde a qualquer ele-
mentoE Corresponde a qualquer ele-
mento E (isto eacute um elemento dotipo E)
E F Corresponde a qualquer ele-mento F que eacute descendente deum elemento E
E gt F Corresponde a qualquer ele-mento F que eacute filho do elementoE
Efirst-child Corresponde agrave primeira ocorrecircn-cia do elemento E
Ewarning Corresponde a qualquer ele-mento do tipo E que possui aclasse ldquowarningrdquo
Emyid Corresponde a qualquer ele-mento E que possui o ID ldquomyidrdquo
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011)
Normalmente eacute disponibilizada uma interface para que a aacutervore DOM
possa ser navegada Alguns parsers permitem que essa funccedilatildeo seja realizada atra-
veacutes de seletores CSS aleacutem de prover meacutetodos que permitem manipular e recuperar
informaccedilotildees de noacutes
Neste trabalho eacute utilizado o analisador de HTML phpQuery Eacute uma fer-
ramenta server-side orientado a seletores CSS3 e com meacutetodos para recuperaccedilatildeo
e manipulaccedilatildeo do Document Object Model (CUDNIK 2009)
20
3 Web Mining
Textos viacutedeos imagens e sons satildeo publicados e compartilhados a todo
momento e em todas as partes do mundo atraveacutes da World Wide Web O acompa-
nhamento absorccedilatildeo e compreensatildeo dessa imensuraacutevel quantidade de informaccedilatildeo
eacute uma tarefa impraticaacutevel ainda que em um niacutevel micro Por isso o conceito de
Web Mining foi criado por pesquisadores
Web Mining derivado da expressatildeo Data Mining pode ser amplamente
definido como a descoberta e anaacutelise de informaccedilatildeo uacutetil da World Wide Web (COO-
LEY MOBASHER SRIVASTAVA 1997)
Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e Srivastava(1997) Juacutenior (2007)
Uma taxonomia da Web Mining eacute apresentado na FIGURA 3 Nos paragraacute-
fos seguintes tem-se uma breve explicaccedilatildeo sobre cada subtoacutepico nela apresentada
sem se estender ateacute os noacutes do terceiro niacutevel
21
Web Structure Mining (Mineraccedilatildeo da Estrutura da Web) se refere ao pro-
cesso de descoberta de conhecimento atraveacutes da relaccedilatildeo entre os documentos con-
tidos na Web
Web Usage Mining (Mineraccedilatildeo do Uso da Web) analisa o padratildeo de com-
portamento de usuaacuterios na Web Como exemplo simples pode ser citado a desco-
berta de padrotildees no acesso de usuaacuterios a um determinado site em um Web server
Por fim Web Content Mining eacute tratado no subcapiacutetulo seguinte
31 Web Content Mining
Web Content Mining (Mineraccedilatildeo do Conteuacutedo da Web) eacute o processo de
extraccedilatildeo de informaccedilatildeo do conteuacutedo de documentos e seus metadados (palavras-
chave informaccedilotildees sobre produtos imagens etc) Apesar deste enfoque abranger
principalmente documentos HTML ele se estende a formatos natildeo-textuais como
imagens e viacutedeos (SANTOS 2009) Segundo Cooley Mobasher e Srivastava (1997)
Web Content Mining pode ser dividido em trecircs abordagens explicadas a seguir
A primeira delas Agent Based Approach em portuguecircs Abordagem Base-
ada em Agentes pode ser dividida nas seguintes categorias
bull Intelligent Search Agents (Agentes Inteligentes de Busca) sistemas que bus-
cam por dados relevantes organizando e interpretando a informaccedilatildeo desco-
berta FAQ-Finder (HAMMOND et al 1995) e BargainFinder (WAN PENG
2010) satildeo dois exemplos claacutessicos dessa categoria
bull Information FilteringCategorization (FiltragemCategorizaccedilatildeo de Informa-
ccedilatildeo) agentes que usam uma variedade de teacutecnicas de recuperaccedilatildeo de infor-
maccedilatildeo e caracteriacutesticas de documentos da Web para automaticamente ob-
ter filtrar e organizar a informaccedilatildeo BO (Bookmark Organizer) (MAAREK
SHAUL 1996) eacute um exemplo desse tipo de aplicaccedilatildeo tendo em vista que
22
ele organiza coleccedilotildees de documentos da Web baseados na sua informaccedilatildeo
conceitual
bull Personalized Web Agents (Agentes Web Personalizados) satildeo agentes que
aprendem as preferecircncias do usuaacuterio e descobrem informaccedilotildees da Web ba-
seada nessas preferecircncas (COOLEY MOBASHER SRIVASTAVA 1997)
A segunda abordagem Database Approach (Abordagem de Database)
foca em teacutecnicas para organizaccedilatildeo da informaccedilatildeo semi-estruturada da Web em
dados mais estruturados usando mecanismos padrotildees de consulta agrave databases e
teacutecnicas de data mining para anaacutelise Pode ser dividido em duas categorias
bull Multilevel Databases (Databases Multiniacuteveis) a principal ideia dessa abor-
dagem eacute que o niacutevel mais baixo da database contenha informaccedilatildeo semi-
estruturada armazenada em vaacuterios repositoacuterios Web Nos niacuteveis mais altos
meta dados ou generalizaccedilotildees satildeo extraiacutedos dos niacuteveis mais baixos e orga-
nizados em coleccedilotildees estruturadas como databases relacionais orientadas a
objetos (COOLEY MOBASHER SRIVASTAVA 1997)
bull Web Query Systems (Sistemas de Consultas Web) sistemas que utilizam
padrotildees de consultas a databases ou a informaccedilotildees estruturais sobre docu-
mentos Web e ateacute processadores de linguagens naturais para processar as
consultas que satildeo realizadas nas buscas na Internet (COOLEY MOBASHER
SRIVASTAVA 1997)
Este trabalho estaacute situado na aacuterea de Web Content Mining especificamente
na Abordagem Baseada em Agentes na categoria de Agentes Inteligentes de Busca
visto que o conteuacutedo presente no HTML de paacuteginas de e-commerce seratildeo anali-
sados por um robocirc de busca inteligente que coletaraacute e organizaraacute a informaccedilatildeo
relevante
23
32 Wrapper
A World Wide Web natildeo eacute estruturada de forma a apresentar informaccedilotildees
que possam ser lidas por maacutequinas A maioria da imensuraacutevel quantidade de dados
presente na Web estaacute apresentada em estruturas fracamente semacircnticas que natildeo po-
dem ser compreendidas por agentes (DOORENBOS ETZIONI WELD 1997) Faz-se
necessaacuterio entatildeo uma regra de traduccedilatildeo para cada fonte de dados A esse ldquotradutorrdquo
eacute dado o nome de wrapper (KUSHMERICK 1997 COWIE LEHNERT 1996)
Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers Fonte Yanget al (2000)
Formalmente um wrapper eacute um programa agente ou conjunto de regras
que entende a informaccedilatildeo de uma fonte e a traduz em uma forma regular e compre-
ensiacutevel que pode ser usada por outros agentes Um wrapper eacute especializado apenas
em uma uacutenica fonte de informaccedilotildees (YANG et al 2000) A FIGURA 4 mostra um
sistema de integraccedilatildeo de informaccedilotildees usando vaacuterios wrappers cada um para uma
fonte especiacutefica de informaccedilatildeo
24
Segundo Firat (2003) wrappers podem ser divididos em trecircs tipos baseado
no seu niacutevel de automaccedilatildeo
bull Manual codificar manualmente um wrapper normalmente eacute uma tarefa
tediosa e em alguns casos impraticaacutevel O nuacutemero de fontes de dados pode
ser muito grande ou crescer rapidamente e a estrutura e o conteuacutedo da fonte
pode frequentemente mudar Todos esses fatores tornam essa tarefa manual
altamente custosa e demorada (TATBUL et al 2001)
bull Semi-automaacutetico (interativo) em alguns casos as regras de um wrap-
per que lida com os detalhes especiacuteficos de uma fonte de dados eacute relati-
vamente pequena A outra parte eacute igual em todos os wrappers ou pode ser
gerada semi-automaticamente baseada em uma descriccedilatildeo declarativa dada
pelo usuaacuterio (TATBUL et al 2001)
bull Automaacutetico a geraccedilatildeo automaacutetica de um wrapper significa que natildeo haacute
intervenccedilatildeo humana nesse processo Ferramentas de geraccedilatildeo automaacutetica
podem ser especiacuteficas pra um site ou geneacutericas normalmente necessitam de
um estaacutegio de treinamento e satildeo baseados em algoritmos de aprendizado
supervisionado (TATBUL et al 2001)
Neste trabalho o wrapper gerado seraacute um conjunto de seletores CSS que
especificam quais dados de paacuteginas Web devem ser extraiacutedos gerando informaccedilotildees
relevantes a partir de documentos semi-estruturados
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
14
2 Linguagem HTML
A World Wide Web eacute uma imensa rede de informaccedilotildees Segundo o World
Wide Web Consortium a principal organizaccedilatildeo de padrotildees para a Internet a Web se
baseia em trecircs mecanismos que tornam esses recursos disponiacuteveis para o puacuteblico
mais amplo possiacutevel (CONSORTIUM 1999)
1 Um esquema de nomenclatura uniforme para a localizaccedilatildeo de recursos pre-
sentes na Web Ex Universal Resource Identifier ou URI
2 Protocolos para acesso agrave recursos nomeados na Web Ex Hypertext Trans-
fer Protocol ou HTTP
3 Hypertext para a faacutecil navegaccedilatildeo entre esses recursos Ex HTML
HTML que eacute usado para navegar entre os recursos da Web eacute tratado na
seccedilatildeo seguinte
21 HTML
HyperText Markup Language (HTML) eacute a liacutengua franca para publicaccedilatildeo
de conteuacutedo na World Wide Web Eacute um formato natildeo-proprietaacuterio que pode ser cri-
ado e processado por uma ampla variedade de ferramentas desde simples editores
de texto agrave ferramentas mais complexas de autoraccedilatildeo HTML usa tags como ltpgt
e ltpgt para estruturar o texto em tiacutetulos paraacutegrafos listas blocos imagens links
para outros documentos etc (CONSORTIUM 2010)
Um breve coacutedigo ou documento HTML eacute exibido abaixo
ltDOCTYPE html PUBLIC -W3CDTD XHTML 10 StrictEN
httpwwww3orgTRxhtml1DTDxhtml1-strictdtdgt
lthtml xmlns=httpwwww3org1999xhtml xmllang=en lang=engt
15
lthead gt
lttitle gtTitulo da Pagina HTML lttitle gt
lthead gt
ltbody gt
ltdiv id=conteudo class=blocogt
lth1gtTitulo do Texto lth1gt
ltpgtParagrafo contendo textoltpgt
ltpgtSegundo paragrafo com mais textoltpgt
ltdivgt
ltdiv class=blocogt
ltpgtltstrong gtTexto em negritoltstrong gtltpgt
ltpgtltemgtTexto em italicoltemgtltpgt
ltdivgt
ltbody gt
lthtml gt
A interpretaccedilatildeo desse coacutedigo pelo browser Google Chrome eacute exibido na
FIGURA 1
Figura 1 Interpretaccedilatildeo de coacutedigo HTML pelo browser Google Chrome
16
Apesar do HTML possuir uma grande quantidade de tags para formataccedilatildeo
de documentos existe uma limitaccedilatildeo histoacuterica em seu projeto as tags usadas satildeo
semi-estruturadas elas apenas descrevem como a informaccedilatildeo deve ser exibida mas
natildeo do que se trata os dados (WAN 2009) Dessa forma natildeo eacute uma linguagem
semacircntica que pode ter sua informaccedilatildeo trivialmente extraiacuteda e interpretada por
agentes computacionais
22 Document Object Model
Document Object Model abreviadamente chamado de DOM eacute uma in-
terface de programaccedilatildeo de aplicaccedilotildees ou API para documentos HTML vaacutelidos e
XML corretamente formatados Ela define a estrutura loacutegica dos documentos e a
maneira como seratildeo acessados e manipulados Atraveacutes da DOM programadores
podem construir documentos navegar pela sua estrutura adicionar modificar ou
remover elementos e conteuacutedo (ROBIE et al 2000)
Como eacute uma especificaccedilatildeo do World Wide Web Consortium ou W3C o
objetivo da Document Object Model eacute fornecer uma API padratildeo que possa ser
usada por uma ampla variedade de linguagens de programaccedilatildeo
No DOM os documentos tem uma estrutura loacutegica que eacute muito parecida
com uma aacutervore mais precisamente uma ldquoflorestardquo que eacute um conjunto de aacutervo-
res Cada documento conteacutem zero ou um noacute de declaraccedilatildeo de tipo de documento
(DOCTYPE) um noacute raiz e zero ou mais instruccedilotildees de processamento e comentaacute-
rios O elemento raiz funciona como o noacute raiz da aacutervore do documento (ROBIE et
al 2000)
Como exemplo considere o coacutedigo HTML apresentado na seccedilatildeo anterior
A aacutervore DOM deste documento eacute apresentada na FIGURA 2 Atraveacutes da manipu-
laccedilatildeo desta aacutervore eacute possiacutevel adicionar novos elementos atraveacutes da simples adiccedilatildeo
17
de novos noacutes agrave estrutura remover elementos atraveacutes da remoccedilatildeo de noacutes e editar
conteuacutedo textuais ou estruturais seja alterando textos ou modificando noacutes
Figura 2 Reproduccedilatildeo de uma aacutervore DOM para um documento HTML
Eacute facilmente perceptiacutevel que a API DOM eacute de suma importacircncia na anaacutelise
de conteuacutedos provenientes da World Wide Web
23 Seletores CSS
Cascading Style Sheets (CSS) eacute uma linguagem de estilo utilizada para
descrever a apresentaccedilatildeo de paacuteginas Web incluindo cores layouts fonte etc (CON-
SORTIUM 2011) Para que os elementos possam ser estilizados existem regras de
correspondecircncia para determinar quais regras se aplicam a elementos da aacutervore
DOM (BOS et al 2011)
18
Um simples exemplo de um documento CSS eacute apresentado a seguir con-
tendo alguns seletores
font -size 12px
h1
color red
p
color black
O CSS acima especifica atraveacutes do uso do seletor ldquordquo que qualquer ele-
mento do documento no qual eacute aplicado deve ter o texto no tamanho de 12 pixels
todos os elementos do tipo ldquoh1rdquo teratildeo o texto da cor vermelha e os elementos do
tipo ldquoprdquo teratildeo a cor preta especificados atraveacutes do uso de seletores homocircnimos a
esses elementos Na Quadro 1 eacute apresentada a sintaxe de alguns seletores CSS da
especificaccedilatildeo 21
Eacute importante ressaltar que seletores CSS natildeo satildeo usados unicamente para
definir estilos para paacuteginas Web Eles tambeacutem satildeo usados na navegaccedilatildeo pela aacutervore
DOM para que atributos e conteuacutedos dos noacutes possam ser recuperados modificados
ou excluiacutedos de forma mais dinacircmica Por exemplo na aacutervore DOM exibida na
FIGURA 2 o seletor ldquoconteudordquo retornaria o noacute ldquoltdivgtrdquo mais agrave esquerda
24 HTML Parsers
Um HTML Parser eacute uma ferramenta que cria uma aacutervore DOM a partir
da anaacutelise de um coacutedigo HTML (NYEIN 2011) O analisador eacute capaz de detectar
e corrigir vaacuterios erros de sintaxe HTML em documentos mal formatados (YANG
ZHANG TSAI 2008)
19
Padratildeo Significado Corresponde a qualquer ele-
mentoE Corresponde a qualquer ele-
mento E (isto eacute um elemento dotipo E)
E F Corresponde a qualquer ele-mento F que eacute descendente deum elemento E
E gt F Corresponde a qualquer ele-mento F que eacute filho do elementoE
Efirst-child Corresponde agrave primeira ocorrecircn-cia do elemento E
Ewarning Corresponde a qualquer ele-mento do tipo E que possui aclasse ldquowarningrdquo
Emyid Corresponde a qualquer ele-mento E que possui o ID ldquomyidrdquo
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011)
Normalmente eacute disponibilizada uma interface para que a aacutervore DOM
possa ser navegada Alguns parsers permitem que essa funccedilatildeo seja realizada atra-
veacutes de seletores CSS aleacutem de prover meacutetodos que permitem manipular e recuperar
informaccedilotildees de noacutes
Neste trabalho eacute utilizado o analisador de HTML phpQuery Eacute uma fer-
ramenta server-side orientado a seletores CSS3 e com meacutetodos para recuperaccedilatildeo
e manipulaccedilatildeo do Document Object Model (CUDNIK 2009)
20
3 Web Mining
Textos viacutedeos imagens e sons satildeo publicados e compartilhados a todo
momento e em todas as partes do mundo atraveacutes da World Wide Web O acompa-
nhamento absorccedilatildeo e compreensatildeo dessa imensuraacutevel quantidade de informaccedilatildeo
eacute uma tarefa impraticaacutevel ainda que em um niacutevel micro Por isso o conceito de
Web Mining foi criado por pesquisadores
Web Mining derivado da expressatildeo Data Mining pode ser amplamente
definido como a descoberta e anaacutelise de informaccedilatildeo uacutetil da World Wide Web (COO-
LEY MOBASHER SRIVASTAVA 1997)
Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e Srivastava(1997) Juacutenior (2007)
Uma taxonomia da Web Mining eacute apresentado na FIGURA 3 Nos paragraacute-
fos seguintes tem-se uma breve explicaccedilatildeo sobre cada subtoacutepico nela apresentada
sem se estender ateacute os noacutes do terceiro niacutevel
21
Web Structure Mining (Mineraccedilatildeo da Estrutura da Web) se refere ao pro-
cesso de descoberta de conhecimento atraveacutes da relaccedilatildeo entre os documentos con-
tidos na Web
Web Usage Mining (Mineraccedilatildeo do Uso da Web) analisa o padratildeo de com-
portamento de usuaacuterios na Web Como exemplo simples pode ser citado a desco-
berta de padrotildees no acesso de usuaacuterios a um determinado site em um Web server
Por fim Web Content Mining eacute tratado no subcapiacutetulo seguinte
31 Web Content Mining
Web Content Mining (Mineraccedilatildeo do Conteuacutedo da Web) eacute o processo de
extraccedilatildeo de informaccedilatildeo do conteuacutedo de documentos e seus metadados (palavras-
chave informaccedilotildees sobre produtos imagens etc) Apesar deste enfoque abranger
principalmente documentos HTML ele se estende a formatos natildeo-textuais como
imagens e viacutedeos (SANTOS 2009) Segundo Cooley Mobasher e Srivastava (1997)
Web Content Mining pode ser dividido em trecircs abordagens explicadas a seguir
A primeira delas Agent Based Approach em portuguecircs Abordagem Base-
ada em Agentes pode ser dividida nas seguintes categorias
bull Intelligent Search Agents (Agentes Inteligentes de Busca) sistemas que bus-
cam por dados relevantes organizando e interpretando a informaccedilatildeo desco-
berta FAQ-Finder (HAMMOND et al 1995) e BargainFinder (WAN PENG
2010) satildeo dois exemplos claacutessicos dessa categoria
bull Information FilteringCategorization (FiltragemCategorizaccedilatildeo de Informa-
ccedilatildeo) agentes que usam uma variedade de teacutecnicas de recuperaccedilatildeo de infor-
maccedilatildeo e caracteriacutesticas de documentos da Web para automaticamente ob-
ter filtrar e organizar a informaccedilatildeo BO (Bookmark Organizer) (MAAREK
SHAUL 1996) eacute um exemplo desse tipo de aplicaccedilatildeo tendo em vista que
22
ele organiza coleccedilotildees de documentos da Web baseados na sua informaccedilatildeo
conceitual
bull Personalized Web Agents (Agentes Web Personalizados) satildeo agentes que
aprendem as preferecircncias do usuaacuterio e descobrem informaccedilotildees da Web ba-
seada nessas preferecircncas (COOLEY MOBASHER SRIVASTAVA 1997)
A segunda abordagem Database Approach (Abordagem de Database)
foca em teacutecnicas para organizaccedilatildeo da informaccedilatildeo semi-estruturada da Web em
dados mais estruturados usando mecanismos padrotildees de consulta agrave databases e
teacutecnicas de data mining para anaacutelise Pode ser dividido em duas categorias
bull Multilevel Databases (Databases Multiniacuteveis) a principal ideia dessa abor-
dagem eacute que o niacutevel mais baixo da database contenha informaccedilatildeo semi-
estruturada armazenada em vaacuterios repositoacuterios Web Nos niacuteveis mais altos
meta dados ou generalizaccedilotildees satildeo extraiacutedos dos niacuteveis mais baixos e orga-
nizados em coleccedilotildees estruturadas como databases relacionais orientadas a
objetos (COOLEY MOBASHER SRIVASTAVA 1997)
bull Web Query Systems (Sistemas de Consultas Web) sistemas que utilizam
padrotildees de consultas a databases ou a informaccedilotildees estruturais sobre docu-
mentos Web e ateacute processadores de linguagens naturais para processar as
consultas que satildeo realizadas nas buscas na Internet (COOLEY MOBASHER
SRIVASTAVA 1997)
Este trabalho estaacute situado na aacuterea de Web Content Mining especificamente
na Abordagem Baseada em Agentes na categoria de Agentes Inteligentes de Busca
visto que o conteuacutedo presente no HTML de paacuteginas de e-commerce seratildeo anali-
sados por um robocirc de busca inteligente que coletaraacute e organizaraacute a informaccedilatildeo
relevante
23
32 Wrapper
A World Wide Web natildeo eacute estruturada de forma a apresentar informaccedilotildees
que possam ser lidas por maacutequinas A maioria da imensuraacutevel quantidade de dados
presente na Web estaacute apresentada em estruturas fracamente semacircnticas que natildeo po-
dem ser compreendidas por agentes (DOORENBOS ETZIONI WELD 1997) Faz-se
necessaacuterio entatildeo uma regra de traduccedilatildeo para cada fonte de dados A esse ldquotradutorrdquo
eacute dado o nome de wrapper (KUSHMERICK 1997 COWIE LEHNERT 1996)
Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers Fonte Yanget al (2000)
Formalmente um wrapper eacute um programa agente ou conjunto de regras
que entende a informaccedilatildeo de uma fonte e a traduz em uma forma regular e compre-
ensiacutevel que pode ser usada por outros agentes Um wrapper eacute especializado apenas
em uma uacutenica fonte de informaccedilotildees (YANG et al 2000) A FIGURA 4 mostra um
sistema de integraccedilatildeo de informaccedilotildees usando vaacuterios wrappers cada um para uma
fonte especiacutefica de informaccedilatildeo
24
Segundo Firat (2003) wrappers podem ser divididos em trecircs tipos baseado
no seu niacutevel de automaccedilatildeo
bull Manual codificar manualmente um wrapper normalmente eacute uma tarefa
tediosa e em alguns casos impraticaacutevel O nuacutemero de fontes de dados pode
ser muito grande ou crescer rapidamente e a estrutura e o conteuacutedo da fonte
pode frequentemente mudar Todos esses fatores tornam essa tarefa manual
altamente custosa e demorada (TATBUL et al 2001)
bull Semi-automaacutetico (interativo) em alguns casos as regras de um wrap-
per que lida com os detalhes especiacuteficos de uma fonte de dados eacute relati-
vamente pequena A outra parte eacute igual em todos os wrappers ou pode ser
gerada semi-automaticamente baseada em uma descriccedilatildeo declarativa dada
pelo usuaacuterio (TATBUL et al 2001)
bull Automaacutetico a geraccedilatildeo automaacutetica de um wrapper significa que natildeo haacute
intervenccedilatildeo humana nesse processo Ferramentas de geraccedilatildeo automaacutetica
podem ser especiacuteficas pra um site ou geneacutericas normalmente necessitam de
um estaacutegio de treinamento e satildeo baseados em algoritmos de aprendizado
supervisionado (TATBUL et al 2001)
Neste trabalho o wrapper gerado seraacute um conjunto de seletores CSS que
especificam quais dados de paacuteginas Web devem ser extraiacutedos gerando informaccedilotildees
relevantes a partir de documentos semi-estruturados
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
15
lthead gt
lttitle gtTitulo da Pagina HTML lttitle gt
lthead gt
ltbody gt
ltdiv id=conteudo class=blocogt
lth1gtTitulo do Texto lth1gt
ltpgtParagrafo contendo textoltpgt
ltpgtSegundo paragrafo com mais textoltpgt
ltdivgt
ltdiv class=blocogt
ltpgtltstrong gtTexto em negritoltstrong gtltpgt
ltpgtltemgtTexto em italicoltemgtltpgt
ltdivgt
ltbody gt
lthtml gt
A interpretaccedilatildeo desse coacutedigo pelo browser Google Chrome eacute exibido na
FIGURA 1
Figura 1 Interpretaccedilatildeo de coacutedigo HTML pelo browser Google Chrome
16
Apesar do HTML possuir uma grande quantidade de tags para formataccedilatildeo
de documentos existe uma limitaccedilatildeo histoacuterica em seu projeto as tags usadas satildeo
semi-estruturadas elas apenas descrevem como a informaccedilatildeo deve ser exibida mas
natildeo do que se trata os dados (WAN 2009) Dessa forma natildeo eacute uma linguagem
semacircntica que pode ter sua informaccedilatildeo trivialmente extraiacuteda e interpretada por
agentes computacionais
22 Document Object Model
Document Object Model abreviadamente chamado de DOM eacute uma in-
terface de programaccedilatildeo de aplicaccedilotildees ou API para documentos HTML vaacutelidos e
XML corretamente formatados Ela define a estrutura loacutegica dos documentos e a
maneira como seratildeo acessados e manipulados Atraveacutes da DOM programadores
podem construir documentos navegar pela sua estrutura adicionar modificar ou
remover elementos e conteuacutedo (ROBIE et al 2000)
Como eacute uma especificaccedilatildeo do World Wide Web Consortium ou W3C o
objetivo da Document Object Model eacute fornecer uma API padratildeo que possa ser
usada por uma ampla variedade de linguagens de programaccedilatildeo
No DOM os documentos tem uma estrutura loacutegica que eacute muito parecida
com uma aacutervore mais precisamente uma ldquoflorestardquo que eacute um conjunto de aacutervo-
res Cada documento conteacutem zero ou um noacute de declaraccedilatildeo de tipo de documento
(DOCTYPE) um noacute raiz e zero ou mais instruccedilotildees de processamento e comentaacute-
rios O elemento raiz funciona como o noacute raiz da aacutervore do documento (ROBIE et
al 2000)
Como exemplo considere o coacutedigo HTML apresentado na seccedilatildeo anterior
A aacutervore DOM deste documento eacute apresentada na FIGURA 2 Atraveacutes da manipu-
laccedilatildeo desta aacutervore eacute possiacutevel adicionar novos elementos atraveacutes da simples adiccedilatildeo
17
de novos noacutes agrave estrutura remover elementos atraveacutes da remoccedilatildeo de noacutes e editar
conteuacutedo textuais ou estruturais seja alterando textos ou modificando noacutes
Figura 2 Reproduccedilatildeo de uma aacutervore DOM para um documento HTML
Eacute facilmente perceptiacutevel que a API DOM eacute de suma importacircncia na anaacutelise
de conteuacutedos provenientes da World Wide Web
23 Seletores CSS
Cascading Style Sheets (CSS) eacute uma linguagem de estilo utilizada para
descrever a apresentaccedilatildeo de paacuteginas Web incluindo cores layouts fonte etc (CON-
SORTIUM 2011) Para que os elementos possam ser estilizados existem regras de
correspondecircncia para determinar quais regras se aplicam a elementos da aacutervore
DOM (BOS et al 2011)
18
Um simples exemplo de um documento CSS eacute apresentado a seguir con-
tendo alguns seletores
font -size 12px
h1
color red
p
color black
O CSS acima especifica atraveacutes do uso do seletor ldquordquo que qualquer ele-
mento do documento no qual eacute aplicado deve ter o texto no tamanho de 12 pixels
todos os elementos do tipo ldquoh1rdquo teratildeo o texto da cor vermelha e os elementos do
tipo ldquoprdquo teratildeo a cor preta especificados atraveacutes do uso de seletores homocircnimos a
esses elementos Na Quadro 1 eacute apresentada a sintaxe de alguns seletores CSS da
especificaccedilatildeo 21
Eacute importante ressaltar que seletores CSS natildeo satildeo usados unicamente para
definir estilos para paacuteginas Web Eles tambeacutem satildeo usados na navegaccedilatildeo pela aacutervore
DOM para que atributos e conteuacutedos dos noacutes possam ser recuperados modificados
ou excluiacutedos de forma mais dinacircmica Por exemplo na aacutervore DOM exibida na
FIGURA 2 o seletor ldquoconteudordquo retornaria o noacute ldquoltdivgtrdquo mais agrave esquerda
24 HTML Parsers
Um HTML Parser eacute uma ferramenta que cria uma aacutervore DOM a partir
da anaacutelise de um coacutedigo HTML (NYEIN 2011) O analisador eacute capaz de detectar
e corrigir vaacuterios erros de sintaxe HTML em documentos mal formatados (YANG
ZHANG TSAI 2008)
19
Padratildeo Significado Corresponde a qualquer ele-
mentoE Corresponde a qualquer ele-
mento E (isto eacute um elemento dotipo E)
E F Corresponde a qualquer ele-mento F que eacute descendente deum elemento E
E gt F Corresponde a qualquer ele-mento F que eacute filho do elementoE
Efirst-child Corresponde agrave primeira ocorrecircn-cia do elemento E
Ewarning Corresponde a qualquer ele-mento do tipo E que possui aclasse ldquowarningrdquo
Emyid Corresponde a qualquer ele-mento E que possui o ID ldquomyidrdquo
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011)
Normalmente eacute disponibilizada uma interface para que a aacutervore DOM
possa ser navegada Alguns parsers permitem que essa funccedilatildeo seja realizada atra-
veacutes de seletores CSS aleacutem de prover meacutetodos que permitem manipular e recuperar
informaccedilotildees de noacutes
Neste trabalho eacute utilizado o analisador de HTML phpQuery Eacute uma fer-
ramenta server-side orientado a seletores CSS3 e com meacutetodos para recuperaccedilatildeo
e manipulaccedilatildeo do Document Object Model (CUDNIK 2009)
20
3 Web Mining
Textos viacutedeos imagens e sons satildeo publicados e compartilhados a todo
momento e em todas as partes do mundo atraveacutes da World Wide Web O acompa-
nhamento absorccedilatildeo e compreensatildeo dessa imensuraacutevel quantidade de informaccedilatildeo
eacute uma tarefa impraticaacutevel ainda que em um niacutevel micro Por isso o conceito de
Web Mining foi criado por pesquisadores
Web Mining derivado da expressatildeo Data Mining pode ser amplamente
definido como a descoberta e anaacutelise de informaccedilatildeo uacutetil da World Wide Web (COO-
LEY MOBASHER SRIVASTAVA 1997)
Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e Srivastava(1997) Juacutenior (2007)
Uma taxonomia da Web Mining eacute apresentado na FIGURA 3 Nos paragraacute-
fos seguintes tem-se uma breve explicaccedilatildeo sobre cada subtoacutepico nela apresentada
sem se estender ateacute os noacutes do terceiro niacutevel
21
Web Structure Mining (Mineraccedilatildeo da Estrutura da Web) se refere ao pro-
cesso de descoberta de conhecimento atraveacutes da relaccedilatildeo entre os documentos con-
tidos na Web
Web Usage Mining (Mineraccedilatildeo do Uso da Web) analisa o padratildeo de com-
portamento de usuaacuterios na Web Como exemplo simples pode ser citado a desco-
berta de padrotildees no acesso de usuaacuterios a um determinado site em um Web server
Por fim Web Content Mining eacute tratado no subcapiacutetulo seguinte
31 Web Content Mining
Web Content Mining (Mineraccedilatildeo do Conteuacutedo da Web) eacute o processo de
extraccedilatildeo de informaccedilatildeo do conteuacutedo de documentos e seus metadados (palavras-
chave informaccedilotildees sobre produtos imagens etc) Apesar deste enfoque abranger
principalmente documentos HTML ele se estende a formatos natildeo-textuais como
imagens e viacutedeos (SANTOS 2009) Segundo Cooley Mobasher e Srivastava (1997)
Web Content Mining pode ser dividido em trecircs abordagens explicadas a seguir
A primeira delas Agent Based Approach em portuguecircs Abordagem Base-
ada em Agentes pode ser dividida nas seguintes categorias
bull Intelligent Search Agents (Agentes Inteligentes de Busca) sistemas que bus-
cam por dados relevantes organizando e interpretando a informaccedilatildeo desco-
berta FAQ-Finder (HAMMOND et al 1995) e BargainFinder (WAN PENG
2010) satildeo dois exemplos claacutessicos dessa categoria
bull Information FilteringCategorization (FiltragemCategorizaccedilatildeo de Informa-
ccedilatildeo) agentes que usam uma variedade de teacutecnicas de recuperaccedilatildeo de infor-
maccedilatildeo e caracteriacutesticas de documentos da Web para automaticamente ob-
ter filtrar e organizar a informaccedilatildeo BO (Bookmark Organizer) (MAAREK
SHAUL 1996) eacute um exemplo desse tipo de aplicaccedilatildeo tendo em vista que
22
ele organiza coleccedilotildees de documentos da Web baseados na sua informaccedilatildeo
conceitual
bull Personalized Web Agents (Agentes Web Personalizados) satildeo agentes que
aprendem as preferecircncias do usuaacuterio e descobrem informaccedilotildees da Web ba-
seada nessas preferecircncas (COOLEY MOBASHER SRIVASTAVA 1997)
A segunda abordagem Database Approach (Abordagem de Database)
foca em teacutecnicas para organizaccedilatildeo da informaccedilatildeo semi-estruturada da Web em
dados mais estruturados usando mecanismos padrotildees de consulta agrave databases e
teacutecnicas de data mining para anaacutelise Pode ser dividido em duas categorias
bull Multilevel Databases (Databases Multiniacuteveis) a principal ideia dessa abor-
dagem eacute que o niacutevel mais baixo da database contenha informaccedilatildeo semi-
estruturada armazenada em vaacuterios repositoacuterios Web Nos niacuteveis mais altos
meta dados ou generalizaccedilotildees satildeo extraiacutedos dos niacuteveis mais baixos e orga-
nizados em coleccedilotildees estruturadas como databases relacionais orientadas a
objetos (COOLEY MOBASHER SRIVASTAVA 1997)
bull Web Query Systems (Sistemas de Consultas Web) sistemas que utilizam
padrotildees de consultas a databases ou a informaccedilotildees estruturais sobre docu-
mentos Web e ateacute processadores de linguagens naturais para processar as
consultas que satildeo realizadas nas buscas na Internet (COOLEY MOBASHER
SRIVASTAVA 1997)
Este trabalho estaacute situado na aacuterea de Web Content Mining especificamente
na Abordagem Baseada em Agentes na categoria de Agentes Inteligentes de Busca
visto que o conteuacutedo presente no HTML de paacuteginas de e-commerce seratildeo anali-
sados por um robocirc de busca inteligente que coletaraacute e organizaraacute a informaccedilatildeo
relevante
23
32 Wrapper
A World Wide Web natildeo eacute estruturada de forma a apresentar informaccedilotildees
que possam ser lidas por maacutequinas A maioria da imensuraacutevel quantidade de dados
presente na Web estaacute apresentada em estruturas fracamente semacircnticas que natildeo po-
dem ser compreendidas por agentes (DOORENBOS ETZIONI WELD 1997) Faz-se
necessaacuterio entatildeo uma regra de traduccedilatildeo para cada fonte de dados A esse ldquotradutorrdquo
eacute dado o nome de wrapper (KUSHMERICK 1997 COWIE LEHNERT 1996)
Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers Fonte Yanget al (2000)
Formalmente um wrapper eacute um programa agente ou conjunto de regras
que entende a informaccedilatildeo de uma fonte e a traduz em uma forma regular e compre-
ensiacutevel que pode ser usada por outros agentes Um wrapper eacute especializado apenas
em uma uacutenica fonte de informaccedilotildees (YANG et al 2000) A FIGURA 4 mostra um
sistema de integraccedilatildeo de informaccedilotildees usando vaacuterios wrappers cada um para uma
fonte especiacutefica de informaccedilatildeo
24
Segundo Firat (2003) wrappers podem ser divididos em trecircs tipos baseado
no seu niacutevel de automaccedilatildeo
bull Manual codificar manualmente um wrapper normalmente eacute uma tarefa
tediosa e em alguns casos impraticaacutevel O nuacutemero de fontes de dados pode
ser muito grande ou crescer rapidamente e a estrutura e o conteuacutedo da fonte
pode frequentemente mudar Todos esses fatores tornam essa tarefa manual
altamente custosa e demorada (TATBUL et al 2001)
bull Semi-automaacutetico (interativo) em alguns casos as regras de um wrap-
per que lida com os detalhes especiacuteficos de uma fonte de dados eacute relati-
vamente pequena A outra parte eacute igual em todos os wrappers ou pode ser
gerada semi-automaticamente baseada em uma descriccedilatildeo declarativa dada
pelo usuaacuterio (TATBUL et al 2001)
bull Automaacutetico a geraccedilatildeo automaacutetica de um wrapper significa que natildeo haacute
intervenccedilatildeo humana nesse processo Ferramentas de geraccedilatildeo automaacutetica
podem ser especiacuteficas pra um site ou geneacutericas normalmente necessitam de
um estaacutegio de treinamento e satildeo baseados em algoritmos de aprendizado
supervisionado (TATBUL et al 2001)
Neste trabalho o wrapper gerado seraacute um conjunto de seletores CSS que
especificam quais dados de paacuteginas Web devem ser extraiacutedos gerando informaccedilotildees
relevantes a partir de documentos semi-estruturados
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
16
Apesar do HTML possuir uma grande quantidade de tags para formataccedilatildeo
de documentos existe uma limitaccedilatildeo histoacuterica em seu projeto as tags usadas satildeo
semi-estruturadas elas apenas descrevem como a informaccedilatildeo deve ser exibida mas
natildeo do que se trata os dados (WAN 2009) Dessa forma natildeo eacute uma linguagem
semacircntica que pode ter sua informaccedilatildeo trivialmente extraiacuteda e interpretada por
agentes computacionais
22 Document Object Model
Document Object Model abreviadamente chamado de DOM eacute uma in-
terface de programaccedilatildeo de aplicaccedilotildees ou API para documentos HTML vaacutelidos e
XML corretamente formatados Ela define a estrutura loacutegica dos documentos e a
maneira como seratildeo acessados e manipulados Atraveacutes da DOM programadores
podem construir documentos navegar pela sua estrutura adicionar modificar ou
remover elementos e conteuacutedo (ROBIE et al 2000)
Como eacute uma especificaccedilatildeo do World Wide Web Consortium ou W3C o
objetivo da Document Object Model eacute fornecer uma API padratildeo que possa ser
usada por uma ampla variedade de linguagens de programaccedilatildeo
No DOM os documentos tem uma estrutura loacutegica que eacute muito parecida
com uma aacutervore mais precisamente uma ldquoflorestardquo que eacute um conjunto de aacutervo-
res Cada documento conteacutem zero ou um noacute de declaraccedilatildeo de tipo de documento
(DOCTYPE) um noacute raiz e zero ou mais instruccedilotildees de processamento e comentaacute-
rios O elemento raiz funciona como o noacute raiz da aacutervore do documento (ROBIE et
al 2000)
Como exemplo considere o coacutedigo HTML apresentado na seccedilatildeo anterior
A aacutervore DOM deste documento eacute apresentada na FIGURA 2 Atraveacutes da manipu-
laccedilatildeo desta aacutervore eacute possiacutevel adicionar novos elementos atraveacutes da simples adiccedilatildeo
17
de novos noacutes agrave estrutura remover elementos atraveacutes da remoccedilatildeo de noacutes e editar
conteuacutedo textuais ou estruturais seja alterando textos ou modificando noacutes
Figura 2 Reproduccedilatildeo de uma aacutervore DOM para um documento HTML
Eacute facilmente perceptiacutevel que a API DOM eacute de suma importacircncia na anaacutelise
de conteuacutedos provenientes da World Wide Web
23 Seletores CSS
Cascading Style Sheets (CSS) eacute uma linguagem de estilo utilizada para
descrever a apresentaccedilatildeo de paacuteginas Web incluindo cores layouts fonte etc (CON-
SORTIUM 2011) Para que os elementos possam ser estilizados existem regras de
correspondecircncia para determinar quais regras se aplicam a elementos da aacutervore
DOM (BOS et al 2011)
18
Um simples exemplo de um documento CSS eacute apresentado a seguir con-
tendo alguns seletores
font -size 12px
h1
color red
p
color black
O CSS acima especifica atraveacutes do uso do seletor ldquordquo que qualquer ele-
mento do documento no qual eacute aplicado deve ter o texto no tamanho de 12 pixels
todos os elementos do tipo ldquoh1rdquo teratildeo o texto da cor vermelha e os elementos do
tipo ldquoprdquo teratildeo a cor preta especificados atraveacutes do uso de seletores homocircnimos a
esses elementos Na Quadro 1 eacute apresentada a sintaxe de alguns seletores CSS da
especificaccedilatildeo 21
Eacute importante ressaltar que seletores CSS natildeo satildeo usados unicamente para
definir estilos para paacuteginas Web Eles tambeacutem satildeo usados na navegaccedilatildeo pela aacutervore
DOM para que atributos e conteuacutedos dos noacutes possam ser recuperados modificados
ou excluiacutedos de forma mais dinacircmica Por exemplo na aacutervore DOM exibida na
FIGURA 2 o seletor ldquoconteudordquo retornaria o noacute ldquoltdivgtrdquo mais agrave esquerda
24 HTML Parsers
Um HTML Parser eacute uma ferramenta que cria uma aacutervore DOM a partir
da anaacutelise de um coacutedigo HTML (NYEIN 2011) O analisador eacute capaz de detectar
e corrigir vaacuterios erros de sintaxe HTML em documentos mal formatados (YANG
ZHANG TSAI 2008)
19
Padratildeo Significado Corresponde a qualquer ele-
mentoE Corresponde a qualquer ele-
mento E (isto eacute um elemento dotipo E)
E F Corresponde a qualquer ele-mento F que eacute descendente deum elemento E
E gt F Corresponde a qualquer ele-mento F que eacute filho do elementoE
Efirst-child Corresponde agrave primeira ocorrecircn-cia do elemento E
Ewarning Corresponde a qualquer ele-mento do tipo E que possui aclasse ldquowarningrdquo
Emyid Corresponde a qualquer ele-mento E que possui o ID ldquomyidrdquo
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011)
Normalmente eacute disponibilizada uma interface para que a aacutervore DOM
possa ser navegada Alguns parsers permitem que essa funccedilatildeo seja realizada atra-
veacutes de seletores CSS aleacutem de prover meacutetodos que permitem manipular e recuperar
informaccedilotildees de noacutes
Neste trabalho eacute utilizado o analisador de HTML phpQuery Eacute uma fer-
ramenta server-side orientado a seletores CSS3 e com meacutetodos para recuperaccedilatildeo
e manipulaccedilatildeo do Document Object Model (CUDNIK 2009)
20
3 Web Mining
Textos viacutedeos imagens e sons satildeo publicados e compartilhados a todo
momento e em todas as partes do mundo atraveacutes da World Wide Web O acompa-
nhamento absorccedilatildeo e compreensatildeo dessa imensuraacutevel quantidade de informaccedilatildeo
eacute uma tarefa impraticaacutevel ainda que em um niacutevel micro Por isso o conceito de
Web Mining foi criado por pesquisadores
Web Mining derivado da expressatildeo Data Mining pode ser amplamente
definido como a descoberta e anaacutelise de informaccedilatildeo uacutetil da World Wide Web (COO-
LEY MOBASHER SRIVASTAVA 1997)
Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e Srivastava(1997) Juacutenior (2007)
Uma taxonomia da Web Mining eacute apresentado na FIGURA 3 Nos paragraacute-
fos seguintes tem-se uma breve explicaccedilatildeo sobre cada subtoacutepico nela apresentada
sem se estender ateacute os noacutes do terceiro niacutevel
21
Web Structure Mining (Mineraccedilatildeo da Estrutura da Web) se refere ao pro-
cesso de descoberta de conhecimento atraveacutes da relaccedilatildeo entre os documentos con-
tidos na Web
Web Usage Mining (Mineraccedilatildeo do Uso da Web) analisa o padratildeo de com-
portamento de usuaacuterios na Web Como exemplo simples pode ser citado a desco-
berta de padrotildees no acesso de usuaacuterios a um determinado site em um Web server
Por fim Web Content Mining eacute tratado no subcapiacutetulo seguinte
31 Web Content Mining
Web Content Mining (Mineraccedilatildeo do Conteuacutedo da Web) eacute o processo de
extraccedilatildeo de informaccedilatildeo do conteuacutedo de documentos e seus metadados (palavras-
chave informaccedilotildees sobre produtos imagens etc) Apesar deste enfoque abranger
principalmente documentos HTML ele se estende a formatos natildeo-textuais como
imagens e viacutedeos (SANTOS 2009) Segundo Cooley Mobasher e Srivastava (1997)
Web Content Mining pode ser dividido em trecircs abordagens explicadas a seguir
A primeira delas Agent Based Approach em portuguecircs Abordagem Base-
ada em Agentes pode ser dividida nas seguintes categorias
bull Intelligent Search Agents (Agentes Inteligentes de Busca) sistemas que bus-
cam por dados relevantes organizando e interpretando a informaccedilatildeo desco-
berta FAQ-Finder (HAMMOND et al 1995) e BargainFinder (WAN PENG
2010) satildeo dois exemplos claacutessicos dessa categoria
bull Information FilteringCategorization (FiltragemCategorizaccedilatildeo de Informa-
ccedilatildeo) agentes que usam uma variedade de teacutecnicas de recuperaccedilatildeo de infor-
maccedilatildeo e caracteriacutesticas de documentos da Web para automaticamente ob-
ter filtrar e organizar a informaccedilatildeo BO (Bookmark Organizer) (MAAREK
SHAUL 1996) eacute um exemplo desse tipo de aplicaccedilatildeo tendo em vista que
22
ele organiza coleccedilotildees de documentos da Web baseados na sua informaccedilatildeo
conceitual
bull Personalized Web Agents (Agentes Web Personalizados) satildeo agentes que
aprendem as preferecircncias do usuaacuterio e descobrem informaccedilotildees da Web ba-
seada nessas preferecircncas (COOLEY MOBASHER SRIVASTAVA 1997)
A segunda abordagem Database Approach (Abordagem de Database)
foca em teacutecnicas para organizaccedilatildeo da informaccedilatildeo semi-estruturada da Web em
dados mais estruturados usando mecanismos padrotildees de consulta agrave databases e
teacutecnicas de data mining para anaacutelise Pode ser dividido em duas categorias
bull Multilevel Databases (Databases Multiniacuteveis) a principal ideia dessa abor-
dagem eacute que o niacutevel mais baixo da database contenha informaccedilatildeo semi-
estruturada armazenada em vaacuterios repositoacuterios Web Nos niacuteveis mais altos
meta dados ou generalizaccedilotildees satildeo extraiacutedos dos niacuteveis mais baixos e orga-
nizados em coleccedilotildees estruturadas como databases relacionais orientadas a
objetos (COOLEY MOBASHER SRIVASTAVA 1997)
bull Web Query Systems (Sistemas de Consultas Web) sistemas que utilizam
padrotildees de consultas a databases ou a informaccedilotildees estruturais sobre docu-
mentos Web e ateacute processadores de linguagens naturais para processar as
consultas que satildeo realizadas nas buscas na Internet (COOLEY MOBASHER
SRIVASTAVA 1997)
Este trabalho estaacute situado na aacuterea de Web Content Mining especificamente
na Abordagem Baseada em Agentes na categoria de Agentes Inteligentes de Busca
visto que o conteuacutedo presente no HTML de paacuteginas de e-commerce seratildeo anali-
sados por um robocirc de busca inteligente que coletaraacute e organizaraacute a informaccedilatildeo
relevante
23
32 Wrapper
A World Wide Web natildeo eacute estruturada de forma a apresentar informaccedilotildees
que possam ser lidas por maacutequinas A maioria da imensuraacutevel quantidade de dados
presente na Web estaacute apresentada em estruturas fracamente semacircnticas que natildeo po-
dem ser compreendidas por agentes (DOORENBOS ETZIONI WELD 1997) Faz-se
necessaacuterio entatildeo uma regra de traduccedilatildeo para cada fonte de dados A esse ldquotradutorrdquo
eacute dado o nome de wrapper (KUSHMERICK 1997 COWIE LEHNERT 1996)
Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers Fonte Yanget al (2000)
Formalmente um wrapper eacute um programa agente ou conjunto de regras
que entende a informaccedilatildeo de uma fonte e a traduz em uma forma regular e compre-
ensiacutevel que pode ser usada por outros agentes Um wrapper eacute especializado apenas
em uma uacutenica fonte de informaccedilotildees (YANG et al 2000) A FIGURA 4 mostra um
sistema de integraccedilatildeo de informaccedilotildees usando vaacuterios wrappers cada um para uma
fonte especiacutefica de informaccedilatildeo
24
Segundo Firat (2003) wrappers podem ser divididos em trecircs tipos baseado
no seu niacutevel de automaccedilatildeo
bull Manual codificar manualmente um wrapper normalmente eacute uma tarefa
tediosa e em alguns casos impraticaacutevel O nuacutemero de fontes de dados pode
ser muito grande ou crescer rapidamente e a estrutura e o conteuacutedo da fonte
pode frequentemente mudar Todos esses fatores tornam essa tarefa manual
altamente custosa e demorada (TATBUL et al 2001)
bull Semi-automaacutetico (interativo) em alguns casos as regras de um wrap-
per que lida com os detalhes especiacuteficos de uma fonte de dados eacute relati-
vamente pequena A outra parte eacute igual em todos os wrappers ou pode ser
gerada semi-automaticamente baseada em uma descriccedilatildeo declarativa dada
pelo usuaacuterio (TATBUL et al 2001)
bull Automaacutetico a geraccedilatildeo automaacutetica de um wrapper significa que natildeo haacute
intervenccedilatildeo humana nesse processo Ferramentas de geraccedilatildeo automaacutetica
podem ser especiacuteficas pra um site ou geneacutericas normalmente necessitam de
um estaacutegio de treinamento e satildeo baseados em algoritmos de aprendizado
supervisionado (TATBUL et al 2001)
Neste trabalho o wrapper gerado seraacute um conjunto de seletores CSS que
especificam quais dados de paacuteginas Web devem ser extraiacutedos gerando informaccedilotildees
relevantes a partir de documentos semi-estruturados
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
17
de novos noacutes agrave estrutura remover elementos atraveacutes da remoccedilatildeo de noacutes e editar
conteuacutedo textuais ou estruturais seja alterando textos ou modificando noacutes
Figura 2 Reproduccedilatildeo de uma aacutervore DOM para um documento HTML
Eacute facilmente perceptiacutevel que a API DOM eacute de suma importacircncia na anaacutelise
de conteuacutedos provenientes da World Wide Web
23 Seletores CSS
Cascading Style Sheets (CSS) eacute uma linguagem de estilo utilizada para
descrever a apresentaccedilatildeo de paacuteginas Web incluindo cores layouts fonte etc (CON-
SORTIUM 2011) Para que os elementos possam ser estilizados existem regras de
correspondecircncia para determinar quais regras se aplicam a elementos da aacutervore
DOM (BOS et al 2011)
18
Um simples exemplo de um documento CSS eacute apresentado a seguir con-
tendo alguns seletores
font -size 12px
h1
color red
p
color black
O CSS acima especifica atraveacutes do uso do seletor ldquordquo que qualquer ele-
mento do documento no qual eacute aplicado deve ter o texto no tamanho de 12 pixels
todos os elementos do tipo ldquoh1rdquo teratildeo o texto da cor vermelha e os elementos do
tipo ldquoprdquo teratildeo a cor preta especificados atraveacutes do uso de seletores homocircnimos a
esses elementos Na Quadro 1 eacute apresentada a sintaxe de alguns seletores CSS da
especificaccedilatildeo 21
Eacute importante ressaltar que seletores CSS natildeo satildeo usados unicamente para
definir estilos para paacuteginas Web Eles tambeacutem satildeo usados na navegaccedilatildeo pela aacutervore
DOM para que atributos e conteuacutedos dos noacutes possam ser recuperados modificados
ou excluiacutedos de forma mais dinacircmica Por exemplo na aacutervore DOM exibida na
FIGURA 2 o seletor ldquoconteudordquo retornaria o noacute ldquoltdivgtrdquo mais agrave esquerda
24 HTML Parsers
Um HTML Parser eacute uma ferramenta que cria uma aacutervore DOM a partir
da anaacutelise de um coacutedigo HTML (NYEIN 2011) O analisador eacute capaz de detectar
e corrigir vaacuterios erros de sintaxe HTML em documentos mal formatados (YANG
ZHANG TSAI 2008)
19
Padratildeo Significado Corresponde a qualquer ele-
mentoE Corresponde a qualquer ele-
mento E (isto eacute um elemento dotipo E)
E F Corresponde a qualquer ele-mento F que eacute descendente deum elemento E
E gt F Corresponde a qualquer ele-mento F que eacute filho do elementoE
Efirst-child Corresponde agrave primeira ocorrecircn-cia do elemento E
Ewarning Corresponde a qualquer ele-mento do tipo E que possui aclasse ldquowarningrdquo
Emyid Corresponde a qualquer ele-mento E que possui o ID ldquomyidrdquo
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011)
Normalmente eacute disponibilizada uma interface para que a aacutervore DOM
possa ser navegada Alguns parsers permitem que essa funccedilatildeo seja realizada atra-
veacutes de seletores CSS aleacutem de prover meacutetodos que permitem manipular e recuperar
informaccedilotildees de noacutes
Neste trabalho eacute utilizado o analisador de HTML phpQuery Eacute uma fer-
ramenta server-side orientado a seletores CSS3 e com meacutetodos para recuperaccedilatildeo
e manipulaccedilatildeo do Document Object Model (CUDNIK 2009)
20
3 Web Mining
Textos viacutedeos imagens e sons satildeo publicados e compartilhados a todo
momento e em todas as partes do mundo atraveacutes da World Wide Web O acompa-
nhamento absorccedilatildeo e compreensatildeo dessa imensuraacutevel quantidade de informaccedilatildeo
eacute uma tarefa impraticaacutevel ainda que em um niacutevel micro Por isso o conceito de
Web Mining foi criado por pesquisadores
Web Mining derivado da expressatildeo Data Mining pode ser amplamente
definido como a descoberta e anaacutelise de informaccedilatildeo uacutetil da World Wide Web (COO-
LEY MOBASHER SRIVASTAVA 1997)
Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e Srivastava(1997) Juacutenior (2007)
Uma taxonomia da Web Mining eacute apresentado na FIGURA 3 Nos paragraacute-
fos seguintes tem-se uma breve explicaccedilatildeo sobre cada subtoacutepico nela apresentada
sem se estender ateacute os noacutes do terceiro niacutevel
21
Web Structure Mining (Mineraccedilatildeo da Estrutura da Web) se refere ao pro-
cesso de descoberta de conhecimento atraveacutes da relaccedilatildeo entre os documentos con-
tidos na Web
Web Usage Mining (Mineraccedilatildeo do Uso da Web) analisa o padratildeo de com-
portamento de usuaacuterios na Web Como exemplo simples pode ser citado a desco-
berta de padrotildees no acesso de usuaacuterios a um determinado site em um Web server
Por fim Web Content Mining eacute tratado no subcapiacutetulo seguinte
31 Web Content Mining
Web Content Mining (Mineraccedilatildeo do Conteuacutedo da Web) eacute o processo de
extraccedilatildeo de informaccedilatildeo do conteuacutedo de documentos e seus metadados (palavras-
chave informaccedilotildees sobre produtos imagens etc) Apesar deste enfoque abranger
principalmente documentos HTML ele se estende a formatos natildeo-textuais como
imagens e viacutedeos (SANTOS 2009) Segundo Cooley Mobasher e Srivastava (1997)
Web Content Mining pode ser dividido em trecircs abordagens explicadas a seguir
A primeira delas Agent Based Approach em portuguecircs Abordagem Base-
ada em Agentes pode ser dividida nas seguintes categorias
bull Intelligent Search Agents (Agentes Inteligentes de Busca) sistemas que bus-
cam por dados relevantes organizando e interpretando a informaccedilatildeo desco-
berta FAQ-Finder (HAMMOND et al 1995) e BargainFinder (WAN PENG
2010) satildeo dois exemplos claacutessicos dessa categoria
bull Information FilteringCategorization (FiltragemCategorizaccedilatildeo de Informa-
ccedilatildeo) agentes que usam uma variedade de teacutecnicas de recuperaccedilatildeo de infor-
maccedilatildeo e caracteriacutesticas de documentos da Web para automaticamente ob-
ter filtrar e organizar a informaccedilatildeo BO (Bookmark Organizer) (MAAREK
SHAUL 1996) eacute um exemplo desse tipo de aplicaccedilatildeo tendo em vista que
22
ele organiza coleccedilotildees de documentos da Web baseados na sua informaccedilatildeo
conceitual
bull Personalized Web Agents (Agentes Web Personalizados) satildeo agentes que
aprendem as preferecircncias do usuaacuterio e descobrem informaccedilotildees da Web ba-
seada nessas preferecircncas (COOLEY MOBASHER SRIVASTAVA 1997)
A segunda abordagem Database Approach (Abordagem de Database)
foca em teacutecnicas para organizaccedilatildeo da informaccedilatildeo semi-estruturada da Web em
dados mais estruturados usando mecanismos padrotildees de consulta agrave databases e
teacutecnicas de data mining para anaacutelise Pode ser dividido em duas categorias
bull Multilevel Databases (Databases Multiniacuteveis) a principal ideia dessa abor-
dagem eacute que o niacutevel mais baixo da database contenha informaccedilatildeo semi-
estruturada armazenada em vaacuterios repositoacuterios Web Nos niacuteveis mais altos
meta dados ou generalizaccedilotildees satildeo extraiacutedos dos niacuteveis mais baixos e orga-
nizados em coleccedilotildees estruturadas como databases relacionais orientadas a
objetos (COOLEY MOBASHER SRIVASTAVA 1997)
bull Web Query Systems (Sistemas de Consultas Web) sistemas que utilizam
padrotildees de consultas a databases ou a informaccedilotildees estruturais sobre docu-
mentos Web e ateacute processadores de linguagens naturais para processar as
consultas que satildeo realizadas nas buscas na Internet (COOLEY MOBASHER
SRIVASTAVA 1997)
Este trabalho estaacute situado na aacuterea de Web Content Mining especificamente
na Abordagem Baseada em Agentes na categoria de Agentes Inteligentes de Busca
visto que o conteuacutedo presente no HTML de paacuteginas de e-commerce seratildeo anali-
sados por um robocirc de busca inteligente que coletaraacute e organizaraacute a informaccedilatildeo
relevante
23
32 Wrapper
A World Wide Web natildeo eacute estruturada de forma a apresentar informaccedilotildees
que possam ser lidas por maacutequinas A maioria da imensuraacutevel quantidade de dados
presente na Web estaacute apresentada em estruturas fracamente semacircnticas que natildeo po-
dem ser compreendidas por agentes (DOORENBOS ETZIONI WELD 1997) Faz-se
necessaacuterio entatildeo uma regra de traduccedilatildeo para cada fonte de dados A esse ldquotradutorrdquo
eacute dado o nome de wrapper (KUSHMERICK 1997 COWIE LEHNERT 1996)
Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers Fonte Yanget al (2000)
Formalmente um wrapper eacute um programa agente ou conjunto de regras
que entende a informaccedilatildeo de uma fonte e a traduz em uma forma regular e compre-
ensiacutevel que pode ser usada por outros agentes Um wrapper eacute especializado apenas
em uma uacutenica fonte de informaccedilotildees (YANG et al 2000) A FIGURA 4 mostra um
sistema de integraccedilatildeo de informaccedilotildees usando vaacuterios wrappers cada um para uma
fonte especiacutefica de informaccedilatildeo
24
Segundo Firat (2003) wrappers podem ser divididos em trecircs tipos baseado
no seu niacutevel de automaccedilatildeo
bull Manual codificar manualmente um wrapper normalmente eacute uma tarefa
tediosa e em alguns casos impraticaacutevel O nuacutemero de fontes de dados pode
ser muito grande ou crescer rapidamente e a estrutura e o conteuacutedo da fonte
pode frequentemente mudar Todos esses fatores tornam essa tarefa manual
altamente custosa e demorada (TATBUL et al 2001)
bull Semi-automaacutetico (interativo) em alguns casos as regras de um wrap-
per que lida com os detalhes especiacuteficos de uma fonte de dados eacute relati-
vamente pequena A outra parte eacute igual em todos os wrappers ou pode ser
gerada semi-automaticamente baseada em uma descriccedilatildeo declarativa dada
pelo usuaacuterio (TATBUL et al 2001)
bull Automaacutetico a geraccedilatildeo automaacutetica de um wrapper significa que natildeo haacute
intervenccedilatildeo humana nesse processo Ferramentas de geraccedilatildeo automaacutetica
podem ser especiacuteficas pra um site ou geneacutericas normalmente necessitam de
um estaacutegio de treinamento e satildeo baseados em algoritmos de aprendizado
supervisionado (TATBUL et al 2001)
Neste trabalho o wrapper gerado seraacute um conjunto de seletores CSS que
especificam quais dados de paacuteginas Web devem ser extraiacutedos gerando informaccedilotildees
relevantes a partir de documentos semi-estruturados
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
18
Um simples exemplo de um documento CSS eacute apresentado a seguir con-
tendo alguns seletores
font -size 12px
h1
color red
p
color black
O CSS acima especifica atraveacutes do uso do seletor ldquordquo que qualquer ele-
mento do documento no qual eacute aplicado deve ter o texto no tamanho de 12 pixels
todos os elementos do tipo ldquoh1rdquo teratildeo o texto da cor vermelha e os elementos do
tipo ldquoprdquo teratildeo a cor preta especificados atraveacutes do uso de seletores homocircnimos a
esses elementos Na Quadro 1 eacute apresentada a sintaxe de alguns seletores CSS da
especificaccedilatildeo 21
Eacute importante ressaltar que seletores CSS natildeo satildeo usados unicamente para
definir estilos para paacuteginas Web Eles tambeacutem satildeo usados na navegaccedilatildeo pela aacutervore
DOM para que atributos e conteuacutedos dos noacutes possam ser recuperados modificados
ou excluiacutedos de forma mais dinacircmica Por exemplo na aacutervore DOM exibida na
FIGURA 2 o seletor ldquoconteudordquo retornaria o noacute ldquoltdivgtrdquo mais agrave esquerda
24 HTML Parsers
Um HTML Parser eacute uma ferramenta que cria uma aacutervore DOM a partir
da anaacutelise de um coacutedigo HTML (NYEIN 2011) O analisador eacute capaz de detectar
e corrigir vaacuterios erros de sintaxe HTML em documentos mal formatados (YANG
ZHANG TSAI 2008)
19
Padratildeo Significado Corresponde a qualquer ele-
mentoE Corresponde a qualquer ele-
mento E (isto eacute um elemento dotipo E)
E F Corresponde a qualquer ele-mento F que eacute descendente deum elemento E
E gt F Corresponde a qualquer ele-mento F que eacute filho do elementoE
Efirst-child Corresponde agrave primeira ocorrecircn-cia do elemento E
Ewarning Corresponde a qualquer ele-mento do tipo E que possui aclasse ldquowarningrdquo
Emyid Corresponde a qualquer ele-mento E que possui o ID ldquomyidrdquo
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011)
Normalmente eacute disponibilizada uma interface para que a aacutervore DOM
possa ser navegada Alguns parsers permitem que essa funccedilatildeo seja realizada atra-
veacutes de seletores CSS aleacutem de prover meacutetodos que permitem manipular e recuperar
informaccedilotildees de noacutes
Neste trabalho eacute utilizado o analisador de HTML phpQuery Eacute uma fer-
ramenta server-side orientado a seletores CSS3 e com meacutetodos para recuperaccedilatildeo
e manipulaccedilatildeo do Document Object Model (CUDNIK 2009)
20
3 Web Mining
Textos viacutedeos imagens e sons satildeo publicados e compartilhados a todo
momento e em todas as partes do mundo atraveacutes da World Wide Web O acompa-
nhamento absorccedilatildeo e compreensatildeo dessa imensuraacutevel quantidade de informaccedilatildeo
eacute uma tarefa impraticaacutevel ainda que em um niacutevel micro Por isso o conceito de
Web Mining foi criado por pesquisadores
Web Mining derivado da expressatildeo Data Mining pode ser amplamente
definido como a descoberta e anaacutelise de informaccedilatildeo uacutetil da World Wide Web (COO-
LEY MOBASHER SRIVASTAVA 1997)
Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e Srivastava(1997) Juacutenior (2007)
Uma taxonomia da Web Mining eacute apresentado na FIGURA 3 Nos paragraacute-
fos seguintes tem-se uma breve explicaccedilatildeo sobre cada subtoacutepico nela apresentada
sem se estender ateacute os noacutes do terceiro niacutevel
21
Web Structure Mining (Mineraccedilatildeo da Estrutura da Web) se refere ao pro-
cesso de descoberta de conhecimento atraveacutes da relaccedilatildeo entre os documentos con-
tidos na Web
Web Usage Mining (Mineraccedilatildeo do Uso da Web) analisa o padratildeo de com-
portamento de usuaacuterios na Web Como exemplo simples pode ser citado a desco-
berta de padrotildees no acesso de usuaacuterios a um determinado site em um Web server
Por fim Web Content Mining eacute tratado no subcapiacutetulo seguinte
31 Web Content Mining
Web Content Mining (Mineraccedilatildeo do Conteuacutedo da Web) eacute o processo de
extraccedilatildeo de informaccedilatildeo do conteuacutedo de documentos e seus metadados (palavras-
chave informaccedilotildees sobre produtos imagens etc) Apesar deste enfoque abranger
principalmente documentos HTML ele se estende a formatos natildeo-textuais como
imagens e viacutedeos (SANTOS 2009) Segundo Cooley Mobasher e Srivastava (1997)
Web Content Mining pode ser dividido em trecircs abordagens explicadas a seguir
A primeira delas Agent Based Approach em portuguecircs Abordagem Base-
ada em Agentes pode ser dividida nas seguintes categorias
bull Intelligent Search Agents (Agentes Inteligentes de Busca) sistemas que bus-
cam por dados relevantes organizando e interpretando a informaccedilatildeo desco-
berta FAQ-Finder (HAMMOND et al 1995) e BargainFinder (WAN PENG
2010) satildeo dois exemplos claacutessicos dessa categoria
bull Information FilteringCategorization (FiltragemCategorizaccedilatildeo de Informa-
ccedilatildeo) agentes que usam uma variedade de teacutecnicas de recuperaccedilatildeo de infor-
maccedilatildeo e caracteriacutesticas de documentos da Web para automaticamente ob-
ter filtrar e organizar a informaccedilatildeo BO (Bookmark Organizer) (MAAREK
SHAUL 1996) eacute um exemplo desse tipo de aplicaccedilatildeo tendo em vista que
22
ele organiza coleccedilotildees de documentos da Web baseados na sua informaccedilatildeo
conceitual
bull Personalized Web Agents (Agentes Web Personalizados) satildeo agentes que
aprendem as preferecircncias do usuaacuterio e descobrem informaccedilotildees da Web ba-
seada nessas preferecircncas (COOLEY MOBASHER SRIVASTAVA 1997)
A segunda abordagem Database Approach (Abordagem de Database)
foca em teacutecnicas para organizaccedilatildeo da informaccedilatildeo semi-estruturada da Web em
dados mais estruturados usando mecanismos padrotildees de consulta agrave databases e
teacutecnicas de data mining para anaacutelise Pode ser dividido em duas categorias
bull Multilevel Databases (Databases Multiniacuteveis) a principal ideia dessa abor-
dagem eacute que o niacutevel mais baixo da database contenha informaccedilatildeo semi-
estruturada armazenada em vaacuterios repositoacuterios Web Nos niacuteveis mais altos
meta dados ou generalizaccedilotildees satildeo extraiacutedos dos niacuteveis mais baixos e orga-
nizados em coleccedilotildees estruturadas como databases relacionais orientadas a
objetos (COOLEY MOBASHER SRIVASTAVA 1997)
bull Web Query Systems (Sistemas de Consultas Web) sistemas que utilizam
padrotildees de consultas a databases ou a informaccedilotildees estruturais sobre docu-
mentos Web e ateacute processadores de linguagens naturais para processar as
consultas que satildeo realizadas nas buscas na Internet (COOLEY MOBASHER
SRIVASTAVA 1997)
Este trabalho estaacute situado na aacuterea de Web Content Mining especificamente
na Abordagem Baseada em Agentes na categoria de Agentes Inteligentes de Busca
visto que o conteuacutedo presente no HTML de paacuteginas de e-commerce seratildeo anali-
sados por um robocirc de busca inteligente que coletaraacute e organizaraacute a informaccedilatildeo
relevante
23
32 Wrapper
A World Wide Web natildeo eacute estruturada de forma a apresentar informaccedilotildees
que possam ser lidas por maacutequinas A maioria da imensuraacutevel quantidade de dados
presente na Web estaacute apresentada em estruturas fracamente semacircnticas que natildeo po-
dem ser compreendidas por agentes (DOORENBOS ETZIONI WELD 1997) Faz-se
necessaacuterio entatildeo uma regra de traduccedilatildeo para cada fonte de dados A esse ldquotradutorrdquo
eacute dado o nome de wrapper (KUSHMERICK 1997 COWIE LEHNERT 1996)
Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers Fonte Yanget al (2000)
Formalmente um wrapper eacute um programa agente ou conjunto de regras
que entende a informaccedilatildeo de uma fonte e a traduz em uma forma regular e compre-
ensiacutevel que pode ser usada por outros agentes Um wrapper eacute especializado apenas
em uma uacutenica fonte de informaccedilotildees (YANG et al 2000) A FIGURA 4 mostra um
sistema de integraccedilatildeo de informaccedilotildees usando vaacuterios wrappers cada um para uma
fonte especiacutefica de informaccedilatildeo
24
Segundo Firat (2003) wrappers podem ser divididos em trecircs tipos baseado
no seu niacutevel de automaccedilatildeo
bull Manual codificar manualmente um wrapper normalmente eacute uma tarefa
tediosa e em alguns casos impraticaacutevel O nuacutemero de fontes de dados pode
ser muito grande ou crescer rapidamente e a estrutura e o conteuacutedo da fonte
pode frequentemente mudar Todos esses fatores tornam essa tarefa manual
altamente custosa e demorada (TATBUL et al 2001)
bull Semi-automaacutetico (interativo) em alguns casos as regras de um wrap-
per que lida com os detalhes especiacuteficos de uma fonte de dados eacute relati-
vamente pequena A outra parte eacute igual em todos os wrappers ou pode ser
gerada semi-automaticamente baseada em uma descriccedilatildeo declarativa dada
pelo usuaacuterio (TATBUL et al 2001)
bull Automaacutetico a geraccedilatildeo automaacutetica de um wrapper significa que natildeo haacute
intervenccedilatildeo humana nesse processo Ferramentas de geraccedilatildeo automaacutetica
podem ser especiacuteficas pra um site ou geneacutericas normalmente necessitam de
um estaacutegio de treinamento e satildeo baseados em algoritmos de aprendizado
supervisionado (TATBUL et al 2001)
Neste trabalho o wrapper gerado seraacute um conjunto de seletores CSS que
especificam quais dados de paacuteginas Web devem ser extraiacutedos gerando informaccedilotildees
relevantes a partir de documentos semi-estruturados
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
19
Padratildeo Significado Corresponde a qualquer ele-
mentoE Corresponde a qualquer ele-
mento E (isto eacute um elemento dotipo E)
E F Corresponde a qualquer ele-mento F que eacute descendente deum elemento E
E gt F Corresponde a qualquer ele-mento F que eacute filho do elementoE
Efirst-child Corresponde agrave primeira ocorrecircn-cia do elemento E
Ewarning Corresponde a qualquer ele-mento do tipo E que possui aclasse ldquowarningrdquo
Emyid Corresponde a qualquer ele-mento E que possui o ID ldquomyidrdquo
Quadro 1 Sintaxe de alguns seletores CSS 21 Fonte Bos et al (2011)
Normalmente eacute disponibilizada uma interface para que a aacutervore DOM
possa ser navegada Alguns parsers permitem que essa funccedilatildeo seja realizada atra-
veacutes de seletores CSS aleacutem de prover meacutetodos que permitem manipular e recuperar
informaccedilotildees de noacutes
Neste trabalho eacute utilizado o analisador de HTML phpQuery Eacute uma fer-
ramenta server-side orientado a seletores CSS3 e com meacutetodos para recuperaccedilatildeo
e manipulaccedilatildeo do Document Object Model (CUDNIK 2009)
20
3 Web Mining
Textos viacutedeos imagens e sons satildeo publicados e compartilhados a todo
momento e em todas as partes do mundo atraveacutes da World Wide Web O acompa-
nhamento absorccedilatildeo e compreensatildeo dessa imensuraacutevel quantidade de informaccedilatildeo
eacute uma tarefa impraticaacutevel ainda que em um niacutevel micro Por isso o conceito de
Web Mining foi criado por pesquisadores
Web Mining derivado da expressatildeo Data Mining pode ser amplamente
definido como a descoberta e anaacutelise de informaccedilatildeo uacutetil da World Wide Web (COO-
LEY MOBASHER SRIVASTAVA 1997)
Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e Srivastava(1997) Juacutenior (2007)
Uma taxonomia da Web Mining eacute apresentado na FIGURA 3 Nos paragraacute-
fos seguintes tem-se uma breve explicaccedilatildeo sobre cada subtoacutepico nela apresentada
sem se estender ateacute os noacutes do terceiro niacutevel
21
Web Structure Mining (Mineraccedilatildeo da Estrutura da Web) se refere ao pro-
cesso de descoberta de conhecimento atraveacutes da relaccedilatildeo entre os documentos con-
tidos na Web
Web Usage Mining (Mineraccedilatildeo do Uso da Web) analisa o padratildeo de com-
portamento de usuaacuterios na Web Como exemplo simples pode ser citado a desco-
berta de padrotildees no acesso de usuaacuterios a um determinado site em um Web server
Por fim Web Content Mining eacute tratado no subcapiacutetulo seguinte
31 Web Content Mining
Web Content Mining (Mineraccedilatildeo do Conteuacutedo da Web) eacute o processo de
extraccedilatildeo de informaccedilatildeo do conteuacutedo de documentos e seus metadados (palavras-
chave informaccedilotildees sobre produtos imagens etc) Apesar deste enfoque abranger
principalmente documentos HTML ele se estende a formatos natildeo-textuais como
imagens e viacutedeos (SANTOS 2009) Segundo Cooley Mobasher e Srivastava (1997)
Web Content Mining pode ser dividido em trecircs abordagens explicadas a seguir
A primeira delas Agent Based Approach em portuguecircs Abordagem Base-
ada em Agentes pode ser dividida nas seguintes categorias
bull Intelligent Search Agents (Agentes Inteligentes de Busca) sistemas que bus-
cam por dados relevantes organizando e interpretando a informaccedilatildeo desco-
berta FAQ-Finder (HAMMOND et al 1995) e BargainFinder (WAN PENG
2010) satildeo dois exemplos claacutessicos dessa categoria
bull Information FilteringCategorization (FiltragemCategorizaccedilatildeo de Informa-
ccedilatildeo) agentes que usam uma variedade de teacutecnicas de recuperaccedilatildeo de infor-
maccedilatildeo e caracteriacutesticas de documentos da Web para automaticamente ob-
ter filtrar e organizar a informaccedilatildeo BO (Bookmark Organizer) (MAAREK
SHAUL 1996) eacute um exemplo desse tipo de aplicaccedilatildeo tendo em vista que
22
ele organiza coleccedilotildees de documentos da Web baseados na sua informaccedilatildeo
conceitual
bull Personalized Web Agents (Agentes Web Personalizados) satildeo agentes que
aprendem as preferecircncias do usuaacuterio e descobrem informaccedilotildees da Web ba-
seada nessas preferecircncas (COOLEY MOBASHER SRIVASTAVA 1997)
A segunda abordagem Database Approach (Abordagem de Database)
foca em teacutecnicas para organizaccedilatildeo da informaccedilatildeo semi-estruturada da Web em
dados mais estruturados usando mecanismos padrotildees de consulta agrave databases e
teacutecnicas de data mining para anaacutelise Pode ser dividido em duas categorias
bull Multilevel Databases (Databases Multiniacuteveis) a principal ideia dessa abor-
dagem eacute que o niacutevel mais baixo da database contenha informaccedilatildeo semi-
estruturada armazenada em vaacuterios repositoacuterios Web Nos niacuteveis mais altos
meta dados ou generalizaccedilotildees satildeo extraiacutedos dos niacuteveis mais baixos e orga-
nizados em coleccedilotildees estruturadas como databases relacionais orientadas a
objetos (COOLEY MOBASHER SRIVASTAVA 1997)
bull Web Query Systems (Sistemas de Consultas Web) sistemas que utilizam
padrotildees de consultas a databases ou a informaccedilotildees estruturais sobre docu-
mentos Web e ateacute processadores de linguagens naturais para processar as
consultas que satildeo realizadas nas buscas na Internet (COOLEY MOBASHER
SRIVASTAVA 1997)
Este trabalho estaacute situado na aacuterea de Web Content Mining especificamente
na Abordagem Baseada em Agentes na categoria de Agentes Inteligentes de Busca
visto que o conteuacutedo presente no HTML de paacuteginas de e-commerce seratildeo anali-
sados por um robocirc de busca inteligente que coletaraacute e organizaraacute a informaccedilatildeo
relevante
23
32 Wrapper
A World Wide Web natildeo eacute estruturada de forma a apresentar informaccedilotildees
que possam ser lidas por maacutequinas A maioria da imensuraacutevel quantidade de dados
presente na Web estaacute apresentada em estruturas fracamente semacircnticas que natildeo po-
dem ser compreendidas por agentes (DOORENBOS ETZIONI WELD 1997) Faz-se
necessaacuterio entatildeo uma regra de traduccedilatildeo para cada fonte de dados A esse ldquotradutorrdquo
eacute dado o nome de wrapper (KUSHMERICK 1997 COWIE LEHNERT 1996)
Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers Fonte Yanget al (2000)
Formalmente um wrapper eacute um programa agente ou conjunto de regras
que entende a informaccedilatildeo de uma fonte e a traduz em uma forma regular e compre-
ensiacutevel que pode ser usada por outros agentes Um wrapper eacute especializado apenas
em uma uacutenica fonte de informaccedilotildees (YANG et al 2000) A FIGURA 4 mostra um
sistema de integraccedilatildeo de informaccedilotildees usando vaacuterios wrappers cada um para uma
fonte especiacutefica de informaccedilatildeo
24
Segundo Firat (2003) wrappers podem ser divididos em trecircs tipos baseado
no seu niacutevel de automaccedilatildeo
bull Manual codificar manualmente um wrapper normalmente eacute uma tarefa
tediosa e em alguns casos impraticaacutevel O nuacutemero de fontes de dados pode
ser muito grande ou crescer rapidamente e a estrutura e o conteuacutedo da fonte
pode frequentemente mudar Todos esses fatores tornam essa tarefa manual
altamente custosa e demorada (TATBUL et al 2001)
bull Semi-automaacutetico (interativo) em alguns casos as regras de um wrap-
per que lida com os detalhes especiacuteficos de uma fonte de dados eacute relati-
vamente pequena A outra parte eacute igual em todos os wrappers ou pode ser
gerada semi-automaticamente baseada em uma descriccedilatildeo declarativa dada
pelo usuaacuterio (TATBUL et al 2001)
bull Automaacutetico a geraccedilatildeo automaacutetica de um wrapper significa que natildeo haacute
intervenccedilatildeo humana nesse processo Ferramentas de geraccedilatildeo automaacutetica
podem ser especiacuteficas pra um site ou geneacutericas normalmente necessitam de
um estaacutegio de treinamento e satildeo baseados em algoritmos de aprendizado
supervisionado (TATBUL et al 2001)
Neste trabalho o wrapper gerado seraacute um conjunto de seletores CSS que
especificam quais dados de paacuteginas Web devem ser extraiacutedos gerando informaccedilotildees
relevantes a partir de documentos semi-estruturados
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
20
3 Web Mining
Textos viacutedeos imagens e sons satildeo publicados e compartilhados a todo
momento e em todas as partes do mundo atraveacutes da World Wide Web O acompa-
nhamento absorccedilatildeo e compreensatildeo dessa imensuraacutevel quantidade de informaccedilatildeo
eacute uma tarefa impraticaacutevel ainda que em um niacutevel micro Por isso o conceito de
Web Mining foi criado por pesquisadores
Web Mining derivado da expressatildeo Data Mining pode ser amplamente
definido como a descoberta e anaacutelise de informaccedilatildeo uacutetil da World Wide Web (COO-
LEY MOBASHER SRIVASTAVA 1997)
Figura 3 Taxonomia de Web Mining Fonte Cooley Mobasher e Srivastava(1997) Juacutenior (2007)
Uma taxonomia da Web Mining eacute apresentado na FIGURA 3 Nos paragraacute-
fos seguintes tem-se uma breve explicaccedilatildeo sobre cada subtoacutepico nela apresentada
sem se estender ateacute os noacutes do terceiro niacutevel
21
Web Structure Mining (Mineraccedilatildeo da Estrutura da Web) se refere ao pro-
cesso de descoberta de conhecimento atraveacutes da relaccedilatildeo entre os documentos con-
tidos na Web
Web Usage Mining (Mineraccedilatildeo do Uso da Web) analisa o padratildeo de com-
portamento de usuaacuterios na Web Como exemplo simples pode ser citado a desco-
berta de padrotildees no acesso de usuaacuterios a um determinado site em um Web server
Por fim Web Content Mining eacute tratado no subcapiacutetulo seguinte
31 Web Content Mining
Web Content Mining (Mineraccedilatildeo do Conteuacutedo da Web) eacute o processo de
extraccedilatildeo de informaccedilatildeo do conteuacutedo de documentos e seus metadados (palavras-
chave informaccedilotildees sobre produtos imagens etc) Apesar deste enfoque abranger
principalmente documentos HTML ele se estende a formatos natildeo-textuais como
imagens e viacutedeos (SANTOS 2009) Segundo Cooley Mobasher e Srivastava (1997)
Web Content Mining pode ser dividido em trecircs abordagens explicadas a seguir
A primeira delas Agent Based Approach em portuguecircs Abordagem Base-
ada em Agentes pode ser dividida nas seguintes categorias
bull Intelligent Search Agents (Agentes Inteligentes de Busca) sistemas que bus-
cam por dados relevantes organizando e interpretando a informaccedilatildeo desco-
berta FAQ-Finder (HAMMOND et al 1995) e BargainFinder (WAN PENG
2010) satildeo dois exemplos claacutessicos dessa categoria
bull Information FilteringCategorization (FiltragemCategorizaccedilatildeo de Informa-
ccedilatildeo) agentes que usam uma variedade de teacutecnicas de recuperaccedilatildeo de infor-
maccedilatildeo e caracteriacutesticas de documentos da Web para automaticamente ob-
ter filtrar e organizar a informaccedilatildeo BO (Bookmark Organizer) (MAAREK
SHAUL 1996) eacute um exemplo desse tipo de aplicaccedilatildeo tendo em vista que
22
ele organiza coleccedilotildees de documentos da Web baseados na sua informaccedilatildeo
conceitual
bull Personalized Web Agents (Agentes Web Personalizados) satildeo agentes que
aprendem as preferecircncias do usuaacuterio e descobrem informaccedilotildees da Web ba-
seada nessas preferecircncas (COOLEY MOBASHER SRIVASTAVA 1997)
A segunda abordagem Database Approach (Abordagem de Database)
foca em teacutecnicas para organizaccedilatildeo da informaccedilatildeo semi-estruturada da Web em
dados mais estruturados usando mecanismos padrotildees de consulta agrave databases e
teacutecnicas de data mining para anaacutelise Pode ser dividido em duas categorias
bull Multilevel Databases (Databases Multiniacuteveis) a principal ideia dessa abor-
dagem eacute que o niacutevel mais baixo da database contenha informaccedilatildeo semi-
estruturada armazenada em vaacuterios repositoacuterios Web Nos niacuteveis mais altos
meta dados ou generalizaccedilotildees satildeo extraiacutedos dos niacuteveis mais baixos e orga-
nizados em coleccedilotildees estruturadas como databases relacionais orientadas a
objetos (COOLEY MOBASHER SRIVASTAVA 1997)
bull Web Query Systems (Sistemas de Consultas Web) sistemas que utilizam
padrotildees de consultas a databases ou a informaccedilotildees estruturais sobre docu-
mentos Web e ateacute processadores de linguagens naturais para processar as
consultas que satildeo realizadas nas buscas na Internet (COOLEY MOBASHER
SRIVASTAVA 1997)
Este trabalho estaacute situado na aacuterea de Web Content Mining especificamente
na Abordagem Baseada em Agentes na categoria de Agentes Inteligentes de Busca
visto que o conteuacutedo presente no HTML de paacuteginas de e-commerce seratildeo anali-
sados por um robocirc de busca inteligente que coletaraacute e organizaraacute a informaccedilatildeo
relevante
23
32 Wrapper
A World Wide Web natildeo eacute estruturada de forma a apresentar informaccedilotildees
que possam ser lidas por maacutequinas A maioria da imensuraacutevel quantidade de dados
presente na Web estaacute apresentada em estruturas fracamente semacircnticas que natildeo po-
dem ser compreendidas por agentes (DOORENBOS ETZIONI WELD 1997) Faz-se
necessaacuterio entatildeo uma regra de traduccedilatildeo para cada fonte de dados A esse ldquotradutorrdquo
eacute dado o nome de wrapper (KUSHMERICK 1997 COWIE LEHNERT 1996)
Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers Fonte Yanget al (2000)
Formalmente um wrapper eacute um programa agente ou conjunto de regras
que entende a informaccedilatildeo de uma fonte e a traduz em uma forma regular e compre-
ensiacutevel que pode ser usada por outros agentes Um wrapper eacute especializado apenas
em uma uacutenica fonte de informaccedilotildees (YANG et al 2000) A FIGURA 4 mostra um
sistema de integraccedilatildeo de informaccedilotildees usando vaacuterios wrappers cada um para uma
fonte especiacutefica de informaccedilatildeo
24
Segundo Firat (2003) wrappers podem ser divididos em trecircs tipos baseado
no seu niacutevel de automaccedilatildeo
bull Manual codificar manualmente um wrapper normalmente eacute uma tarefa
tediosa e em alguns casos impraticaacutevel O nuacutemero de fontes de dados pode
ser muito grande ou crescer rapidamente e a estrutura e o conteuacutedo da fonte
pode frequentemente mudar Todos esses fatores tornam essa tarefa manual
altamente custosa e demorada (TATBUL et al 2001)
bull Semi-automaacutetico (interativo) em alguns casos as regras de um wrap-
per que lida com os detalhes especiacuteficos de uma fonte de dados eacute relati-
vamente pequena A outra parte eacute igual em todos os wrappers ou pode ser
gerada semi-automaticamente baseada em uma descriccedilatildeo declarativa dada
pelo usuaacuterio (TATBUL et al 2001)
bull Automaacutetico a geraccedilatildeo automaacutetica de um wrapper significa que natildeo haacute
intervenccedilatildeo humana nesse processo Ferramentas de geraccedilatildeo automaacutetica
podem ser especiacuteficas pra um site ou geneacutericas normalmente necessitam de
um estaacutegio de treinamento e satildeo baseados em algoritmos de aprendizado
supervisionado (TATBUL et al 2001)
Neste trabalho o wrapper gerado seraacute um conjunto de seletores CSS que
especificam quais dados de paacuteginas Web devem ser extraiacutedos gerando informaccedilotildees
relevantes a partir de documentos semi-estruturados
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
21
Web Structure Mining (Mineraccedilatildeo da Estrutura da Web) se refere ao pro-
cesso de descoberta de conhecimento atraveacutes da relaccedilatildeo entre os documentos con-
tidos na Web
Web Usage Mining (Mineraccedilatildeo do Uso da Web) analisa o padratildeo de com-
portamento de usuaacuterios na Web Como exemplo simples pode ser citado a desco-
berta de padrotildees no acesso de usuaacuterios a um determinado site em um Web server
Por fim Web Content Mining eacute tratado no subcapiacutetulo seguinte
31 Web Content Mining
Web Content Mining (Mineraccedilatildeo do Conteuacutedo da Web) eacute o processo de
extraccedilatildeo de informaccedilatildeo do conteuacutedo de documentos e seus metadados (palavras-
chave informaccedilotildees sobre produtos imagens etc) Apesar deste enfoque abranger
principalmente documentos HTML ele se estende a formatos natildeo-textuais como
imagens e viacutedeos (SANTOS 2009) Segundo Cooley Mobasher e Srivastava (1997)
Web Content Mining pode ser dividido em trecircs abordagens explicadas a seguir
A primeira delas Agent Based Approach em portuguecircs Abordagem Base-
ada em Agentes pode ser dividida nas seguintes categorias
bull Intelligent Search Agents (Agentes Inteligentes de Busca) sistemas que bus-
cam por dados relevantes organizando e interpretando a informaccedilatildeo desco-
berta FAQ-Finder (HAMMOND et al 1995) e BargainFinder (WAN PENG
2010) satildeo dois exemplos claacutessicos dessa categoria
bull Information FilteringCategorization (FiltragemCategorizaccedilatildeo de Informa-
ccedilatildeo) agentes que usam uma variedade de teacutecnicas de recuperaccedilatildeo de infor-
maccedilatildeo e caracteriacutesticas de documentos da Web para automaticamente ob-
ter filtrar e organizar a informaccedilatildeo BO (Bookmark Organizer) (MAAREK
SHAUL 1996) eacute um exemplo desse tipo de aplicaccedilatildeo tendo em vista que
22
ele organiza coleccedilotildees de documentos da Web baseados na sua informaccedilatildeo
conceitual
bull Personalized Web Agents (Agentes Web Personalizados) satildeo agentes que
aprendem as preferecircncias do usuaacuterio e descobrem informaccedilotildees da Web ba-
seada nessas preferecircncas (COOLEY MOBASHER SRIVASTAVA 1997)
A segunda abordagem Database Approach (Abordagem de Database)
foca em teacutecnicas para organizaccedilatildeo da informaccedilatildeo semi-estruturada da Web em
dados mais estruturados usando mecanismos padrotildees de consulta agrave databases e
teacutecnicas de data mining para anaacutelise Pode ser dividido em duas categorias
bull Multilevel Databases (Databases Multiniacuteveis) a principal ideia dessa abor-
dagem eacute que o niacutevel mais baixo da database contenha informaccedilatildeo semi-
estruturada armazenada em vaacuterios repositoacuterios Web Nos niacuteveis mais altos
meta dados ou generalizaccedilotildees satildeo extraiacutedos dos niacuteveis mais baixos e orga-
nizados em coleccedilotildees estruturadas como databases relacionais orientadas a
objetos (COOLEY MOBASHER SRIVASTAVA 1997)
bull Web Query Systems (Sistemas de Consultas Web) sistemas que utilizam
padrotildees de consultas a databases ou a informaccedilotildees estruturais sobre docu-
mentos Web e ateacute processadores de linguagens naturais para processar as
consultas que satildeo realizadas nas buscas na Internet (COOLEY MOBASHER
SRIVASTAVA 1997)
Este trabalho estaacute situado na aacuterea de Web Content Mining especificamente
na Abordagem Baseada em Agentes na categoria de Agentes Inteligentes de Busca
visto que o conteuacutedo presente no HTML de paacuteginas de e-commerce seratildeo anali-
sados por um robocirc de busca inteligente que coletaraacute e organizaraacute a informaccedilatildeo
relevante
23
32 Wrapper
A World Wide Web natildeo eacute estruturada de forma a apresentar informaccedilotildees
que possam ser lidas por maacutequinas A maioria da imensuraacutevel quantidade de dados
presente na Web estaacute apresentada em estruturas fracamente semacircnticas que natildeo po-
dem ser compreendidas por agentes (DOORENBOS ETZIONI WELD 1997) Faz-se
necessaacuterio entatildeo uma regra de traduccedilatildeo para cada fonte de dados A esse ldquotradutorrdquo
eacute dado o nome de wrapper (KUSHMERICK 1997 COWIE LEHNERT 1996)
Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers Fonte Yanget al (2000)
Formalmente um wrapper eacute um programa agente ou conjunto de regras
que entende a informaccedilatildeo de uma fonte e a traduz em uma forma regular e compre-
ensiacutevel que pode ser usada por outros agentes Um wrapper eacute especializado apenas
em uma uacutenica fonte de informaccedilotildees (YANG et al 2000) A FIGURA 4 mostra um
sistema de integraccedilatildeo de informaccedilotildees usando vaacuterios wrappers cada um para uma
fonte especiacutefica de informaccedilatildeo
24
Segundo Firat (2003) wrappers podem ser divididos em trecircs tipos baseado
no seu niacutevel de automaccedilatildeo
bull Manual codificar manualmente um wrapper normalmente eacute uma tarefa
tediosa e em alguns casos impraticaacutevel O nuacutemero de fontes de dados pode
ser muito grande ou crescer rapidamente e a estrutura e o conteuacutedo da fonte
pode frequentemente mudar Todos esses fatores tornam essa tarefa manual
altamente custosa e demorada (TATBUL et al 2001)
bull Semi-automaacutetico (interativo) em alguns casos as regras de um wrap-
per que lida com os detalhes especiacuteficos de uma fonte de dados eacute relati-
vamente pequena A outra parte eacute igual em todos os wrappers ou pode ser
gerada semi-automaticamente baseada em uma descriccedilatildeo declarativa dada
pelo usuaacuterio (TATBUL et al 2001)
bull Automaacutetico a geraccedilatildeo automaacutetica de um wrapper significa que natildeo haacute
intervenccedilatildeo humana nesse processo Ferramentas de geraccedilatildeo automaacutetica
podem ser especiacuteficas pra um site ou geneacutericas normalmente necessitam de
um estaacutegio de treinamento e satildeo baseados em algoritmos de aprendizado
supervisionado (TATBUL et al 2001)
Neste trabalho o wrapper gerado seraacute um conjunto de seletores CSS que
especificam quais dados de paacuteginas Web devem ser extraiacutedos gerando informaccedilotildees
relevantes a partir de documentos semi-estruturados
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
22
ele organiza coleccedilotildees de documentos da Web baseados na sua informaccedilatildeo
conceitual
bull Personalized Web Agents (Agentes Web Personalizados) satildeo agentes que
aprendem as preferecircncias do usuaacuterio e descobrem informaccedilotildees da Web ba-
seada nessas preferecircncas (COOLEY MOBASHER SRIVASTAVA 1997)
A segunda abordagem Database Approach (Abordagem de Database)
foca em teacutecnicas para organizaccedilatildeo da informaccedilatildeo semi-estruturada da Web em
dados mais estruturados usando mecanismos padrotildees de consulta agrave databases e
teacutecnicas de data mining para anaacutelise Pode ser dividido em duas categorias
bull Multilevel Databases (Databases Multiniacuteveis) a principal ideia dessa abor-
dagem eacute que o niacutevel mais baixo da database contenha informaccedilatildeo semi-
estruturada armazenada em vaacuterios repositoacuterios Web Nos niacuteveis mais altos
meta dados ou generalizaccedilotildees satildeo extraiacutedos dos niacuteveis mais baixos e orga-
nizados em coleccedilotildees estruturadas como databases relacionais orientadas a
objetos (COOLEY MOBASHER SRIVASTAVA 1997)
bull Web Query Systems (Sistemas de Consultas Web) sistemas que utilizam
padrotildees de consultas a databases ou a informaccedilotildees estruturais sobre docu-
mentos Web e ateacute processadores de linguagens naturais para processar as
consultas que satildeo realizadas nas buscas na Internet (COOLEY MOBASHER
SRIVASTAVA 1997)
Este trabalho estaacute situado na aacuterea de Web Content Mining especificamente
na Abordagem Baseada em Agentes na categoria de Agentes Inteligentes de Busca
visto que o conteuacutedo presente no HTML de paacuteginas de e-commerce seratildeo anali-
sados por um robocirc de busca inteligente que coletaraacute e organizaraacute a informaccedilatildeo
relevante
23
32 Wrapper
A World Wide Web natildeo eacute estruturada de forma a apresentar informaccedilotildees
que possam ser lidas por maacutequinas A maioria da imensuraacutevel quantidade de dados
presente na Web estaacute apresentada em estruturas fracamente semacircnticas que natildeo po-
dem ser compreendidas por agentes (DOORENBOS ETZIONI WELD 1997) Faz-se
necessaacuterio entatildeo uma regra de traduccedilatildeo para cada fonte de dados A esse ldquotradutorrdquo
eacute dado o nome de wrapper (KUSHMERICK 1997 COWIE LEHNERT 1996)
Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers Fonte Yanget al (2000)
Formalmente um wrapper eacute um programa agente ou conjunto de regras
que entende a informaccedilatildeo de uma fonte e a traduz em uma forma regular e compre-
ensiacutevel que pode ser usada por outros agentes Um wrapper eacute especializado apenas
em uma uacutenica fonte de informaccedilotildees (YANG et al 2000) A FIGURA 4 mostra um
sistema de integraccedilatildeo de informaccedilotildees usando vaacuterios wrappers cada um para uma
fonte especiacutefica de informaccedilatildeo
24
Segundo Firat (2003) wrappers podem ser divididos em trecircs tipos baseado
no seu niacutevel de automaccedilatildeo
bull Manual codificar manualmente um wrapper normalmente eacute uma tarefa
tediosa e em alguns casos impraticaacutevel O nuacutemero de fontes de dados pode
ser muito grande ou crescer rapidamente e a estrutura e o conteuacutedo da fonte
pode frequentemente mudar Todos esses fatores tornam essa tarefa manual
altamente custosa e demorada (TATBUL et al 2001)
bull Semi-automaacutetico (interativo) em alguns casos as regras de um wrap-
per que lida com os detalhes especiacuteficos de uma fonte de dados eacute relati-
vamente pequena A outra parte eacute igual em todos os wrappers ou pode ser
gerada semi-automaticamente baseada em uma descriccedilatildeo declarativa dada
pelo usuaacuterio (TATBUL et al 2001)
bull Automaacutetico a geraccedilatildeo automaacutetica de um wrapper significa que natildeo haacute
intervenccedilatildeo humana nesse processo Ferramentas de geraccedilatildeo automaacutetica
podem ser especiacuteficas pra um site ou geneacutericas normalmente necessitam de
um estaacutegio de treinamento e satildeo baseados em algoritmos de aprendizado
supervisionado (TATBUL et al 2001)
Neste trabalho o wrapper gerado seraacute um conjunto de seletores CSS que
especificam quais dados de paacuteginas Web devem ser extraiacutedos gerando informaccedilotildees
relevantes a partir de documentos semi-estruturados
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
23
32 Wrapper
A World Wide Web natildeo eacute estruturada de forma a apresentar informaccedilotildees
que possam ser lidas por maacutequinas A maioria da imensuraacutevel quantidade de dados
presente na Web estaacute apresentada em estruturas fracamente semacircnticas que natildeo po-
dem ser compreendidas por agentes (DOORENBOS ETZIONI WELD 1997) Faz-se
necessaacuterio entatildeo uma regra de traduccedilatildeo para cada fonte de dados A esse ldquotradutorrdquo
eacute dado o nome de wrapper (KUSHMERICK 1997 COWIE LEHNERT 1996)
Figura 4 Um sistema de integraccedilatildeo de informaccedilotildees usando wrappers Fonte Yanget al (2000)
Formalmente um wrapper eacute um programa agente ou conjunto de regras
que entende a informaccedilatildeo de uma fonte e a traduz em uma forma regular e compre-
ensiacutevel que pode ser usada por outros agentes Um wrapper eacute especializado apenas
em uma uacutenica fonte de informaccedilotildees (YANG et al 2000) A FIGURA 4 mostra um
sistema de integraccedilatildeo de informaccedilotildees usando vaacuterios wrappers cada um para uma
fonte especiacutefica de informaccedilatildeo
24
Segundo Firat (2003) wrappers podem ser divididos em trecircs tipos baseado
no seu niacutevel de automaccedilatildeo
bull Manual codificar manualmente um wrapper normalmente eacute uma tarefa
tediosa e em alguns casos impraticaacutevel O nuacutemero de fontes de dados pode
ser muito grande ou crescer rapidamente e a estrutura e o conteuacutedo da fonte
pode frequentemente mudar Todos esses fatores tornam essa tarefa manual
altamente custosa e demorada (TATBUL et al 2001)
bull Semi-automaacutetico (interativo) em alguns casos as regras de um wrap-
per que lida com os detalhes especiacuteficos de uma fonte de dados eacute relati-
vamente pequena A outra parte eacute igual em todos os wrappers ou pode ser
gerada semi-automaticamente baseada em uma descriccedilatildeo declarativa dada
pelo usuaacuterio (TATBUL et al 2001)
bull Automaacutetico a geraccedilatildeo automaacutetica de um wrapper significa que natildeo haacute
intervenccedilatildeo humana nesse processo Ferramentas de geraccedilatildeo automaacutetica
podem ser especiacuteficas pra um site ou geneacutericas normalmente necessitam de
um estaacutegio de treinamento e satildeo baseados em algoritmos de aprendizado
supervisionado (TATBUL et al 2001)
Neste trabalho o wrapper gerado seraacute um conjunto de seletores CSS que
especificam quais dados de paacuteginas Web devem ser extraiacutedos gerando informaccedilotildees
relevantes a partir de documentos semi-estruturados
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
24
Segundo Firat (2003) wrappers podem ser divididos em trecircs tipos baseado
no seu niacutevel de automaccedilatildeo
bull Manual codificar manualmente um wrapper normalmente eacute uma tarefa
tediosa e em alguns casos impraticaacutevel O nuacutemero de fontes de dados pode
ser muito grande ou crescer rapidamente e a estrutura e o conteuacutedo da fonte
pode frequentemente mudar Todos esses fatores tornam essa tarefa manual
altamente custosa e demorada (TATBUL et al 2001)
bull Semi-automaacutetico (interativo) em alguns casos as regras de um wrap-
per que lida com os detalhes especiacuteficos de uma fonte de dados eacute relati-
vamente pequena A outra parte eacute igual em todos os wrappers ou pode ser
gerada semi-automaticamente baseada em uma descriccedilatildeo declarativa dada
pelo usuaacuterio (TATBUL et al 2001)
bull Automaacutetico a geraccedilatildeo automaacutetica de um wrapper significa que natildeo haacute
intervenccedilatildeo humana nesse processo Ferramentas de geraccedilatildeo automaacutetica
podem ser especiacuteficas pra um site ou geneacutericas normalmente necessitam de
um estaacutegio de treinamento e satildeo baseados em algoritmos de aprendizado
supervisionado (TATBUL et al 2001)
Neste trabalho o wrapper gerado seraacute um conjunto de seletores CSS que
especificam quais dados de paacuteginas Web devem ser extraiacutedos gerando informaccedilotildees
relevantes a partir de documentos semi-estruturados
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
25
4 Shopping Comparison
Shopping Comparison ou em portuguecircs Comparador de Preccedilos foi in-
troduzido na World Wide Web em 1995 como a terceira forma de B2C (Business-
to-consumer) apoacutes a venda e o leilatildeo online Eles evoluiacuteram de simples compa-
radores de preccedilo ao oferecimento e combinaccedilatildeo de reviews de produtos e marcas
avaliaccedilotildees de funccedilotildees dentre outros (WAN 2009)
41 Serviccedilos de Shopping Comparison
Em 30 de Junho de 1995 um grupo de pesquisadores do Andersen Consul-
ting and Smart Store Center disponibilizaram um serviccedilo inteligente de compara-
ccedilatildeo de preccedilos conhecido como BargainFinder O projeto foi desenvolvido apenas
como demonstraccedilatildeo e compreendia apenas a busca de CDs de muacutesica (WAN PENG
2010)
Figura 5 Interface de busca do BargainFinder em 1995 Fonte Wan e Peng (2010)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
26
A interface inicial do serviccedilo continha dois campos de texto que o usuaacuterio
podia preencher com o nome de um artista e aacutelbum como a FIGURA 5 mostra Ao
clicar em ldquoShop for the albumrdquo o serviccedilo pesquisava oito lojas online de vendas
de CD de muacutesicas extraiacutea os preccedilos e exibia o resultado em uma uacutenica paacutegina
Apesar de sua interface parecer bastante primitiva comparada com os ser-
viccedilos existentes atualmente o BargainFinder foi o primeiro serviccedilo de Shopping
Comparison a receber atenccedilatildeo puacuteblica e exposiccedilatildeo na miacutedia ainda que natildeo fosse
o primeiro (WAN 2009)
O sucesso do BargainFinder foi imediato em apenas um mecircs o serviccedilo
jaacute era usado mais de 2000 vezes diariamente Entretanto as oito lojas que com-
punham os resultados do comparador natildeo foram notificadas de que suas paacuteginas
estavam sendo pesquisadas seus preccedilos coletados e comparados com os praticados
pelas suas concorrentes As reaccedilotildees foram adversas apoacutes 8 meses de funciona-
mento trecircs lojas bloqueram o acesso do BargainFinder a seus servidores uma co-
operou ativamente trecircs permaneceram neutras e uma cessou as operaccedilotildees Apesar
disso algumas lojas visionaacuterias enxergaram o potencial do BargainFinder e seis
delas pediram para que fossem incluiacutedas no cataacutelogo Esse comportamento indi-
cava um panorama altamente favoraacutevel aos serviccedilos de Shopping Comparison que
hoje em dia satildeo tatildeo populares a ponto de lojas online pagarem para ser listadas nos
serviccedilos mais populares (WAN PENG 2010)
42 Shopbot
Segundo Zhang e Jing (2011) shopbots tambeacutem chamados de agentes de
comparaccedilatildeo de preccedilos satildeo sistemas que automaticamente buscam uma grande va-
riedade de lojas online coletando e agrupando informaccedilotildees de produtos ou serviccedilos
especificados
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
27
Uma definiccedilatildeo mais ampla que eacute adotada neste trabalho eacute a de que shop-
bots satildeo ferramentas automaacuteticas que buscam diversos sites de e-commerce como
lojas online recuperando informaccedilotildees sobre os produtos que satildeo analisadas e ex-
traiacutedas para ajudar os consumidores a fazerem decisotildees de compra Estes agentes
empregam um processo automaacutetico de construccedilatildeo de wrappers para extraccedilatildeo e
anaacutelise de paacuteginas Web semi-estruturadas (HUANG TSAI 2011)
A recuperaccedilatildeo de dados por esses agentes se divide em dois meacutetodos dis-
tintos data wrapping e data feeding No primeiro o agente acessa os sites de
tempos em tempos e atualiza o banco de dados enquanto no segundo as lojas on-
line disponibilizam os dados em um formato previamente definido pelos serviccedilos
de Shopping Comparison Ainda que o segundo meacutetodo seja mais flexiacutevel e es-
taacutevel os serviccedilos de e-commerce hesitam em disponibilizar os dados dessa forma
para natildeo competir com seus pares meramente no preccedilo (WAN 2009)
Figura 6 Arquitetura de um agente de comparaccedilatildeo de preccedilos Fonte Yang et al(2000)
Como exemplo eacute apresentada na FIGURA 6 uma arquitetura de um agente
de comparaccedilatildeo de preccedilos proposto por Yang et al (2000) que se utiliza do meacutetodo
de data wrapping para recuperaccedilatildeo de dados Os moacutedulos pertinentes agrave este traba-
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
28
lho e que compotildeem o ponto de vista administrativo ou seja aqueles que podem ser
acessados apenas pelo system designer (administrador) do serviccedilo satildeo compostos
por
bull Wrapper Generator moacutedulo responsaacutevel pela geraccedilatildeo automaacutetica de wrap-
pers para cada fonte de dados
bull Wrapper Interface eacute o moacutedulo no qual o system designer define as fontes
de dados para que seja realizada a geraccedilatildeo de wrappers
Os moacutedulos que compreendem o ponto de vista do usuaacuterio satildeo compostos
por
bull User Interface eacute a interface do serviccedilo de comparaccedilatildeo de preccedilos Atraveacutes
dela o usuaacuterio digita o termo de busca
bull Rule Executor quando um usuaacuterio realiza uma busca esse moacutedulo eacute ativado
para que cada wrapper previamente gerado seja utilizado nas fontes de da-
dos As informaccedilotildees recuperadas satildeo entatildeo combinadas e exibidas para o
usuaacuterio
A tiacutetulo de exemplo considere um usuaacuterio que deseja buscar por smartphone
em um serviccedilo com a arquitetura acima especificada Para que a busca ofereccedila
resultados natildeo-nulos vaacutelidos e coerentes eacute previamente necessaacuterio que o system
designer tenha adicionado lojas de e-commerce atraveacutes do moacutedulo Wrapper Inter-
face e que os wrappers tenham sido corretamente gerados pelo Wrapper Gene-
rator O usuaacuterio entatildeo acessa o serviccedilo atraveacutes da User Interface e digita em um
input de texto o termo de busca smartphone O moacutedulo Rule Executor eacute ativado
para cada loja online adicionada pelo system designer e executa as regras de extra-
ccedilatildeo contidas no wrapper correspondente Os dados obtidos satildeo entatildeo validados
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
29
agrupados e exibidos na User Interface para que o usuaacuterio possa tomar sua decisatildeo
de compra
Existem vaacuterias outras arquiteturas de shopbots algumas mais simples ou-
tras mais complexas e eficientes Essas propostas podem ser encontradas em Hu-
ang e Tsai (2011) Wan (2009) Doorenbos Etzioni e Weld (1997) e Prasad Ku-
mari e Raju (2009) Neste trabalho seraacute adotado como base a arquitetura proposta
por Yang et al (2000) e acima explicada
43 Impactos no Comeacutercio Eletrocircnico
O mercado brasileiro de Comeacutercio Eletrocircnico encerrou o ano de 2011 com
R$ 187 bilhotildees em faturamento como mostrado na FIGURA 7 Foram 319 mi-
lhotildees de consumidores que efetuaram 537 milhotildees de pedidos via web (EBIT
2011) Satildeo nuacutemeros animadores mas qual a influecircncia dos serviccedilos de Shopping
Comparison no comeacutercio eletrocircnico Consumidores realmente utilizam serviccedilos
de comparaccedilatildeo de preccedilos A comparaccedilatildeo de preccedilos eacute beneacutefica para as lojas de
e-commerce
Figura 7 Evoluccedilatildeo do faturamento do setor de comeacutercio eletrocircnico (em bilhotildees)Fonte ebit (2011)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
30
Vaacuterias pesquisas tecircm sido realizadas na aacuterea para tentar elucidar tais ques-
totildees Montgomery et al (2004) cita que a adoccedilatildeo de serviccedilos de comparaccedilatildeo de
preccedilos sofreu um aumento de 01 em Junho de 1997 para 57 em Maio de
2002 O traacutefego do shoppingcom o principal liacuteder em serviccedilos de comparaccedilatildeo de
preccedilos estaacute logo atraacutes do eBay e da Amazon dois gigantes do comeacutercio online
desde 2003 (WAN 2009) Esse substancial crescimento parece trazer um pano-
rama aparentemente desfarovaacutevel agraves lojas de e-commerce a presenccedila de serviccedilos
de Shopping Comparison colocam uma pressatildeo sobre as margens de preccedilo das
lojas online
Ainda que vaacuterios estudos analiacuteticos tenham assumido que os consumido-
res buscam por um produto perfeitamente homogecircneo levando em conta apenas
a comparaccedilatildeo de preccedilos e comprando da loja que oferece o menor custo (CHEN
SUDHIR 2001 KEPHART GREENWALD 1999) pesquisas recentes demonstram que
essa suposiccedilatildeo natildeo eacute sustentaacutevel Ao usar serviccedilos de comparaccedilatildeo de preccedilos os
consumidores natildeo consideram apenas o preccedilo mas tambeacutem fatores como a forma
de envio poliacuteticas de ressarcimento proteccedilatildeo agrave privacidade e a reputaccedilatildeo da marca
(MONTGOMERY et al 2004 SMITH 2002 SMITH BRYNJOLFSSON 2001) Os ser-
viccedilos de Shopping Comparison realmente exercem uma significante pressatildeo nas
margens de preccedilo dos vendedores onlines entretanto eles possuem vaacuterias opccedilotildees
estrateacutegicas para mitigar essa pressatildeo incluindo precificaccedilatildeo estrateacutegica ofusca-
ccedilatildeo de buscas dentre outros (SMITH 2002)
Estudos demonstrados por Zhang e Jing (2011) demonstram que os ser-
viccedilos de Shopping Comparison se tornam mais atraentes quando a dispersatildeo do
preccedilo dos produtos pesquisados eacute alta Por exemplo computadores tem uma alta
variaccedilatildeo de preccedilos quando comparados a livros isso encoraja o uso da comparaccedilatildeo
de preccedilos jaacute que o consumidor obteacutem os valores em segundos
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
31
Fica evidente que os serviccedilos de comparaccedilatildeo de preccedilos tecircm crescido for-
temente nos uacuteltimos anos No entanto ainda que exista um impacto sobre as lojas
online e seus preccedilos tais impactos natildeo podem ser generalizados e devem ser estu-
dados especificamente para cada tipo de produto ou serviccedilo
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
32
5 Metodologia
Neste capiacutetulo satildeo apresentados as ferramentas que foram empregadas no
desenvolvimento deste trabalho e as bases de dados usadas nos experimentos
51 Meacutetodos
Os meacutetodos empregados neste trabalho consistem nas etapas necessaacuterias
para a geraccedilatildeo automaacutetica de um wrapper de uma loja de e-commerce satildeo elas
Submissatildeo da URL de busca Criaccedilatildeo do Document Object Model Detecccedilatildeo de
Padrotildees e Geraccedilatildeo do Wrapper
Para os testes e elaboraccedilatildeo do shopbot foi determinado um conjunto inicial
de fonte de dados composto por 13 lojas de e-commerce exibidas no Quadro 2
Loja URLDafiti httpwwwdafiticombrShoptime httpwwwshoptimecombrSubmarino httpwwwsubmarinocombrNethoes httpwwwnetshoescombrWalMart httpwwwwalmartcombrCompraFaacutecil httpwwwcomprafacilcombrRicardoEletro httpwwwricardoeletrocombrAmericanas httpwwwamericanascombrSaraiva httpwwwlivrariasaraivacombrFnac httpwwwfnaccombrExtra httpwwwextracombrPontoFrio httpwwwpontofriocombrMagazineLuiza httpwwwmagazineluizacombr
Quadro 2 Lojas de e-commerce utilizadas para elaboraccedilatildeo e testes do protoacutetipo
No entanto para realizar mensuraccedilotildees mais precisas e garantir que a apli-
caccedilatildeo seja geneacuterica e natildeo direcionada para o conjunto inicial estabeleceu-se outro
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
33
conjunto listado no Quadro 3 composto por mais 10 lojas de e-commerce para
testes apoacutes a conclusatildeo do protoacutetipo de shopbot
Faz-se necessaacuterio ressaltar que as lojas que compotildeem o uacuteltimo conjunto
foram escolhidas aleatoriamente em um serviccedilo de Shopping Comparison jaacute esta-
belecido
Loja URLKaBuM httpwwwkabumcombrColombo httpwwwcolombocombrInsinuantecom httpwwwinsinuantecombrTaqi httpwwwtaqicombrLoja Easycombr httpwwweasycombrGirafacombr httpwwwgirafacombrShopfatocom httpwwwshopfatocombrCentaurocombr httpwwwcentaurocombrClassic Tennis httpwwwclassictenniscombrLeader httpwwwleadercombr
Quadro 3 Lojas de e-commerce utilizadas para testes e validaccedilatildeo do protoacutetipo
511 Entendimento do Problema
Este trabalho realiza uma pesquisa de natureza tecnoloacutegica visando o de-
senvolvimento de um protoacutetipo de shopbot capaz de gerar wrappers automaacuteticos
baseados em uma seacuterie de padrotildees previamente detectados em lojas de e-commerce
brasileiras
Como mencionado no Capiacutetulo 1 cada loja possui seu proacuteprio layout
organizaccedilatildeo estrutural tecnologias etc O HTML eacute uma linguagem de marcaccedilatildeo
semi-estruturada e natildeo semacircntica como explicado no Capiacutetulo 2 faz-se necessaacuterio
entatildeo um wrapper que possa traduzir um documento HTML em informaccedilotildees uacuteteis
sobre os produtos
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
34
O algoritmo deveraacute receber como entrada uma string natildeo-nula vaacutelida e
formatada realizar o processamento necessaacuterio para identificar anuacutencios e seus
atributos e em caso da natildeo-ocorrecircncia de erros retornar um wrapper vaacutelido que
possa ser utilizado por outras aplicaccedilotildees
52 Material
Abaixo encontra-se a descriccedilatildeo das ferramentas utilizadas no desenvolvi-
mento deste trabalho desde a concepccedilatildeo do shopbot ateacute a interface para compara-
ccedilatildeo de preccedilos
521 PHP
O PHP (um acrocircnimo recursivo para PHP Hypertext Preprocessor) (PHPNET
2012) eacute uma linguagem de script server-side e open-source elaborada para a
World Wide Web pra que paacuteginas Web dinacircmicas possam ser produzidas O coacute-
digo eacute interpretado no servidor Web atraveacutes de um moacutedulo processador de PHP e
o resultado eacute enviado para o cliente
Essa linguagem foi escolhida em detrimento agraves demais por ser uma tecno-
logia Open Source aleacutem de ser facilmente instalado e configurado
522 phpQuery
phpQuery eacute um analisador HTML (Parser HTML) server-side orientado
agrave seletores CSS3 e com meacutetodos para recuperaccedilatildeo e manipulaccedilatildeo do Document
Object Model (CUDNIK 2009) Eacute uma biblioteca para que documentos HTML
possam ser manipulados atraveacutes de sua aacutervore DOM em scripts desenvolvidos
atraveacutes da linguagem PHP
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
35
Essa ferramenta foi escolhida apoacutes uma anaacutelise entre os parsers HTML
em PHP mais utilizados sendo o phpQuery a ferramenta com o maior nuacutemero de
recursos e a melhor API
523 Ambiente Computacional
O ambiente computacional utilizado para realizaccedilatildeo dos experimentos foi
um MacBook Pro com 4GB de RAM e processador Intel Core i5 de 23 GHz
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
36
6 Arquitetura do Shopbot proposto
Este capiacutetulo descreve com detalhes a construccedilatildeo do shopbot e do algo-
ritmo responsaacutevel por identificar os atributos de produtos gerando um wrapper
reaproveitaacutevel
As etapas propostas para o shopbot deste trabalho foram adaptadas de
Yang et al (2000) 1) determinar quais os termos de busca para realizar uma
requisiccedilatildeo teste a fim de encontrar informaccedilotildees relevantes de produtos 2) Extrair
apenas informaccedilotildees dos produtos da paacutegina de resultados ignorando fragmentos
desnecessaacuterios ou redundantes 3) Ser capaz de reconhecer os atributos de um pro-
duto tais como preccedilo tiacutetulo imagem etc 4) Gerar um wrapper que possa ser
utilizado na fonte de dados fornecida ou seja na loja submetida
Figura 8 Arquitetura do shopbot proposto
A FIGURA 8 mostra a arquitetura proposta para cumprir esses requeri-
mentos
bull Interface de Geraccedilatildeo do Wrapper eacute a interface pelo qual o administrador
adiciona as fontes de dados
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
37
bull Geraccedilatildeo do Wrapper atraveacutes da submissatildeo de uma fonte de dados pelo
administrador os algoritmos para detecccedilatildeo de padrotildees e geraccedilatildeo do wrapper
satildeo ativados Ao fim desse processo caso natildeo haja erros e o reconhecimento
tenha sido realizado o wrapper gerado eacute entatildeo salvo na database
61 Determinaccedilatildeo dos Termos de Busca adequados
611 Detecccedilatildeo de Padrotildees
Apesar de diversas abordagens exigirem uma etapa de treinamento (YANG
et al 2000 DOORENBOS ETZIONI WELD 1997) o shopbot proposto neste traba-
lho se baseia em padrotildees estruturais e sintaacuteticos que satildeo amplamente utilizados
na grande maioria das lojas de e-commerce dispensando a fase de aprendizado
Sendo portanto classificado como de Aprendizado Natildeo Supervisionado
Algoritmos Natildeo Supervisionados trabalham com um conjunto de n exem-
plos xini=1 e realizam tarefas de clustering (ldquoagrupamentordquo) reduccedilatildeo de dimen-
sionalidade etc (ZHU GOLDBERG 2009)
Os padrotildees utilizados em cada fase do algoritmo seratildeo abordados no de-
correr da explicaccedilatildeo de cada uma
612 Submissatildeo da URL e Termos de Busca
Para que o processo se inicie e um wrapper possa ser automaticamente
gerado eacute necessaacuterio que o administrador submeta uma URL de busca natildeo-nula
vaacutelida e previamente formatada de uma fonte de dados Nesta URL o paracircme-
tro que iraacute conter o termo de busca deve ser explicitado atraveacutes do uso da string
ldquolttermgtrdquo
Na Quadro 4 eacute exemplificado a formataccedilao das URLs de busca do con-
junto inicial de testes composto por 13 lojas de e-commerce Pode-se notar que o
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
38
Loja URL de BuscaDafiti httpwwwdafiticombrcatalogq=lttermgtShoptime httpwwwshoptimecombrbuscalttermgtSubmarino httpwwwsubmarinocombrbuscaq=lttermgtNethoes httpwwwnetshoescombrbuscaq=lttermgtWalMart httpwwwwalmartcombrbuscaft=lttermgtCompraFaacutecil httpwwwcomprafacilcombrcomprafacilBusca
jsfQ=lttermgtamptoken=jUUM8Byxg583DRicardoEletro httpwwwricardoeletrocombrBuscaResultado
loja=ampq=lttermgtAmericanas httpwwwamericanascombrbuscalttermgtSaraiva httpwwwlivrariasaraivacombrpesquisaweb
pesquisawebdllpesquisaORDEMN2=EampESTRUTN1=ampPALAVRASN1=lttermgt
Fnac httpwwwfnaccombrpesquisa-1fnachtmlq=lttermgt
Extra httpbuscandoextracombrsearchw=lttermgtPontoFrio httpsearchpontofriocombrsearchw=lttermgtMagazineLuiza httpwwwmagazineluizacombrsearchindexasp
q=lttermgt
Quadro 4 Descriccedilatildeo das lojas e suas URLs de busca utilizadas como entrada parao shopbot
paracircmetro que recebe o termo de busca foi formatado com a string ldquolttermgtrdquo que
seraacute automaticamente substituiacutedo pelos termos de busca adequados
Por termos de busca adequados sub-entende-se termos que retornam ao
menos cinco resultados vaacutelidos nas lojas em que satildeo aplicados Exemplos de ter-
mos natildeo adequados satildeo apresentados no Quadro 5 nota-se que satildeo termos de
busca ldquorestritivosrdquo ou seja retornam poucos resultados por estarem especifica-
mente associados agrave apenas uma marca ou produto
Ainda que um termo possa ser considerado adequado ele pode se tornar
inadequado se aplicado em um domiacutenio natildeo compatiacutevel Como exemplo consi-
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
39
Termos Natildeo Adequadosiphone 4snike shox deliverynokia lumia 800
Quadro 5 Exemplos de termos de busca natildeo adequados
dere o termo de busca ldquotv lcdrdquo Eacute um termo geneacuterico que normalmente obtem
muitos resultados sendo classificado como adequado No entanto ele natildeo obteraacute
resultados satisfatoacuterios caso seja aplicado a uma loja de artigos esportivos Da
mesma forma um termo ldquotecircnis de corridardquo natildeo iraacute obter resultados em uma loja
de eletrocircnicos
Portanto a aplicaccedilatildeo de um termo estaacute intrinsecamente ligado aos produ-
tos que satildeo oferecidos pela loja de e-commerce Termos de busca adequados e
utilizados neste trabalho satildeo exemplificados no Quadro 6
Termos Adequadostv lcdtecircnis nikenotebookcelular
Quadro 6 Exemplos de termos de busca adequados
Como o algoritmo desconhece qual termo eacute o mais adequado ele testa um
a um ateacute que o wrapper seja gerado ou os termos acabem
Um pseudocoacutedigo que contempla o teste exaustivo ateacute que o wrapper seja
gerado ou os termos acabem eacute descrito a seguir
var url_submetida
var termos = [rsquotv lcdrsquo rsquotenis nikersquo rsquonotebookrsquo rsquocelularrsquo]
var pos = 0
while (wrapperValido()) do
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
40
gerarWrapper(substitua(rsquolttermgtrsquo termos[pos] url_submetida))
pos++
613 Anaacutelise do HTML e Conversatildeo em Document Object Model
Uma vez que a URL tenha sido formatada com algum termo de busca eacute
necessaacuterio que o algoritmo construa o Document Object Model ou aacutervore DOM
a partir do conteuacutedo HTML
A URL eacute acessada atraveacutes da biblioteca cURL do PHP e seu conteuacutedo eacute
analisado e convertido em uma aacutervore DOM pela ferramenta phpQuery (CUDNIK
2009)
Figura 9 Exemplo de uma aacutervore DOM com diferentes elementos Fontehttpvinaytechwordpresscom20081124ajax-and-dom
A FIGURA 9 mostra um exemplo de uma estrutura de aacutervore DOM Natildeo
foi reproduzido neste trabalho uma aacutervore completa porque paacuteginas web mais com-
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
41
plexas como resultados de busca de lojas online normalmente possuem uma aacuter-
vore com muitos mais noacutes e ramificaccedilotildees inviaacutevel de ser reproduzida
Eacute atraveacutes dessa aacutervore que o algoritmo iraacute detectar onde estatildeo os produtos
e gerar o wrapper
62 Eliminaccedilatildeo de Ruiacutedos
Em geral as lojas de e-commerce apresentam os resultados em forma de
lista como exibido na FIGURA 10 ou em grade como exibido na FIGURA 11
Figura 10 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma delista
Como pode-se notar a listagem dos resultados segue um padratildeo estrutu-
ral os tiacutetulos preccedilos parcelas e links satildeo exibidos na mesma posiccedilatildeo para cada
resultado encontrado Isso quer dizer que esses elementos seguem com leves al-
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
42
Figura 11 Exemplo de uma paacutegina com apresentaccedilatildeo de resultados em forma degrade
teraccedilotildees um mesmo padratildeo na aacutervore DOM Em resumo o objetivo inicial do al-
goritmo eacute identificar os padrotildees estruturais na aacutervore isolando-os dos fragmentos
desnecessaacuterios Essa identificaccedilatildeo considera apenas o tipo de cada noacute desconsi-
derando o conteuacutedo textual
Para que os padrotildees possam ser identificados eacute necessaacuterio estabelecer
quais os elementos fazem parte da sub-aacutervore de cada noacute Isso eacute realizado atra-
veacutes de um algoritmo poacutes-ordem como exemplificado a seguir
function posordem(arv)
for (cada elemento filho da arvore arv) do
nodes = posordem(arv-gtchildrens)
elementos[] = elemento -gtnodeName
setPadrao(elemento elementos + nodes)
return elementos + nodes
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
43
O algoritmo gera uma tabela contendo o identificador de cada elemento
quais seus noacutes-filhos e um ponteiro para cada noacute que possui aquela estrutura A
FIGURA 12 reproduz um trecho de uma aacutervore DOM o resultado da aplicaccedilatildeo do
algoritmo eacute demonstrado no Quadro 7
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
div img span 10li a 9ul li a 9li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 7 Resultado da aplicaccedilatildeo do algoritmo poacutes-ordem na aacutervore exemplificadana FIGURA 12
Figura 12 Uma aacutervore DOM simplificada para demonstraccedilatildeo da aplicaccedilatildeo doalgoritmo poacutes-ordem
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
44
Eacute importante ressaltar que a Quadro 7 apresenta um resultado da aplica-
ccedilatildeo do algoritmo em uma aacutervore muito reduzida para facilitaccedilatildeo da compreensatildeo
A demonstraccedilatildeo da aplicaccedilatildeo do algoritmo em uma aacutervore DOM real produziria
um resultado extremamente grande iniviaacutevel de ser reproduzido Ainda assim
acredita-se que o exemplo fornecido pela FIGURA 12 eacute capaz de fornecer infor-
maccedilotildees suficientes para a compreensatildeo da aplicaccedilatildeo
O segundo passo apoacutes a geraccedilatildeo da tabela eacute a remoccedilatildeo de ruiacutedos para
que apenas os padrotildees relevantes continuem listados Os ruiacutedos identificados satildeo
listados abaixo
1 Padrotildees que se repetem mais de 40 vezes satildeo removidos No conjunto inicial
de lojas foi identificado que nenhuma exibe uma quantidade de resultados
superior a 30 produtos o que significa que padrotildees que aparecem mais de
40 vezes satildeo ruiacutedos
2 Padrotildees que tenham um nuacutemero de elementos filho superior a 200 satildeo remo-
vidos Normalmente esses padrotildees pertencem a elementos do tipo ldquocontai-
nerrdquo que englobam boa parte do conteuacutedo da paacutegina Natildeo sendo portanto
alvo de anaacutelise do algoritmo
3 Por fim satildeo removidos os sub-padrotildees Sub-padrotildees satildeo os padrotildees que
estatildeo contidos dentro de padrotildees maiores Por exemplo na FIGURA 12
fica claro que queremos encontrar o padratildeo referente a cada sub-aacutervore do
segundo niacutevel No entanto existem sub-padrotildees como as sub-aacutervores ldquoimg
-gt spanrdquo ldquoli -gt ardquo e ldquoul -gt li -gt ardquo que constam no Quadro 7 nas linhas 2 e 3
O algoritmo remove essas entradas desde que elas contenham um nuacutemero de
ponteiros menor ou igual a quantidade de vezes que o ldquopadratildeo-pairdquo possui
O coacutedigo que realiza a remoccedilatildeo de ruiacutedo eacute exibido abaixo
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
45
for (cada entrada pattern na tabela) do
if (pattern[rsquoqtdrsquo] gt 40)
remove(pattern)
else if (qtdElementos(pattern) gt 200)
remove(pattern)
else if (isSubPattern(pattern)
ampamp patternPai(pattern)[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo])
remove(pattern)
O resultado da remoccedilatildeo de ruiacutedos dos dados no Quadro 7 eacute demonstrado
no Quadro 8 Como esperado os sub-padrotildees satildeo removidos
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 9li a a div img span ul 1ul li a a div img span ul li a li a a div
img span ul li a li a a div img span ulli a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul li a li a adiv img span ul li a li a a div img spanul li a li a a div img span ul
1
Quadro 8 Resultado da remoccedilatildeo de ruiacutedos
63 Ordenaccedilatildeo dos Resultados
Como mencionado anteriormente a exibiccedilatildeo dos produtos na aacutervore DOM
segue o mesmo padratildeo com leves alteraccedilotildees Por exemplo na FIGURA 12 pode-
mos ver claramente que a uacuteltima sub-aacutervore pertence agrave mesma classe das outras
ainda que possua uma estrutura levemente modificada Faz-se necessaacuterio entatildeo
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
46
que o algoritmo saiba ldquoagruparrdquo padrotildees que provavelmente pertenccedilam agrave mesma
classe mas que possuem estruturas levemente diferentes
Inicialmente necessita-se calcular o quatildeo diferente satildeo os padrotildees Por-
tanto dados dois padrotildees com quantidades de elementos α e β a equaccedilatildeo 1 calcula
o valor γ que representa em valores numeacutericos a diferenccedila entre eles
γ =
∣∣∣∣(αminusβ )
(α +β )
∣∣∣∣ (1)
O valor retornado por γ varia de 0 a 1 Quando o valor retornado se apro-
xima de 0 significa que o nuacutemero de elementos analisados satildeo bem semelhantes
Opositivamente quanto mais proacuteximo de 1 menos semelhante satildeo as quantida-
des Ou seja γ fornece um medidor quantitativo para a diferenccedila de quantidade de
elementos de cada padratildeo
Foi efetuado entatildeo um calibramento do valor ideal de γ atraveacutes de anaacutelises
do conjunto inicial de 13 lojas Padrotildees soacute satildeo considerados possiacuteveis de junccedilatildeo
entre si caso o valor de γ seja menor ou igual a 02
No entanto apenas a anaacutelise da diferenccedila numeacuterica dos elementos natildeo eacute
o bastante Eacute preciso verificar qual a diferenccedila estrutural entre eles Isso eacute feito
atraveacutes da equaccedilatildeo 2
δ =αminusβ
(α +β )(2)
O valor fornecido por δ mensura de 0 a 1 quatildeo diferente eacute as estruturas dos
elementos analisados Se esse valor se aproxima de 0 significa que as estruturas
satildeo bastante similares Entretando se δ se aproxima de 1 as estruturas satildeo muito
diferentes
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
47
Novamente foi efetuado um calibramento do limite aceitaacutevel para o valor
de δ que foi estabelecido como menor ou igual a 015
Portanto para que dois elementos diferentes sejam unidos eacute necessaacuterio
que a quantidade de ponteiros que o sub-padratildeo contecircm seja menor ou igual agrave
quantidade de ponteiros do ldquopadratildeo-pairdquo e que γ seja menor ou igual a 020 e que
δ seja menor ou igual a 015
for (cada entrada pattern na tabela) do
for (cada entrada subpattern na tabela) do
if (pattern = subpattern
ampamp subpattern[rsquoqtdrsquo] lt= pattern[rsquoqtdrsquo]
ampamp gama lt= 02
ampamp delta lt= 015)
join(pattern subpattern)
O resultado da aplicaccedilatildeo do algoritmo acima nos dados da Quadro 8 eacute
exibido no Quadro 9
Por fim eacute necessaacuterio que os padrotildees remanescentes sejam classificados
em uma ordem de prioridade decrescente de acordo com a probabilidade de ser o
padratildeo de produtos o qual se objetiva encontrar
Isso eacute realizado atraveacutes da equaccedilatildeo 3 aonde micro eacute a quantidade de vezes que
o padratildeo se repete e θ eacute a quantidade de elementos uacutenicos (natildeo-repetidos)
ρ = micro lowastθ (3)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
48
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
li a a div img span ul li a 10ul li a a div img span ul li a li a
a div img span ul li a li a a divimg span ul li a li a a div imgspan ul li a li a a div img spanul li a li a a div img span ul lia li a a div img span ul li a li aa div img span ul li a li a a divimg span ul li a li a a div imgspan ul
1
Quadro 9 Resultado da junccedilatildeo de padrotildees semelhantes
Os padrotildees satildeo organizados em ordem decrescente de acordo com o va-
lor de ρ garantindo que padrotildees com muitos elementos e poucas repeticcedilotildees ou
padrotildees com poucos elementos e muitas repeticcedilotildees natildeo recebam um valor discri-
minante alto ao contraacuterio de elementos mais complexos e que se repetem por mais
vezes que normalmente satildeo as listagens de produtos
O resultado da aplicaccedilatildeo da equaccedilatildeo 3 no Quadro 9 eacute exibido no Quadro
10 e como esperado o padratildeo que conteacutem os produtos eacute o que recebe a maior
prioridade
64 Geraccedilatildeo do Wrapper
Cada padratildeo detectado na etapa anterior eacute submetido para a fase de gera-
ccedilatildeo do wrapper os elementos contidos em cada um satildeo analisados em busca dos
seguintes atributos
1 Tiacutetulo o nome do produto
2 Link o link para a paacutegina do produto
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
49
Elemento Noacutes-filhos Nuacutemerode Pon-teiros
ρ
li a a div img span ul lia
10 60
ul li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul li a li a a divimg span ul li a li aa div img span ul lia li a a div img spanul li a li a a div imgspan ul
1 6
Quadro 10 Resultado da organizaccedilatildeo de acordo com a prioridade
3 Imagem uma imagem que represente o produto
4 Preccedilo qual o preccedilo praticado para o produto
5 Parcelas qual eacute o parcelamento oferecido pela loja
O algoritmo iraacute executar as operaccedilotildees necessaacuterias ateacute que um wrapper
vaacutelido seja gerado ou os padrotildees terminem
for (cada entrada pattern na tabela) do
processos para gerar o wrapper
if (wrapperValido()) break
Um wrapper eacute considerado vaacutelido quando ele possui no miacutenimo as regras
para extraccedilatildeo de tiacutetulo link e preccedilo Ou seja regras para extraccedilatildeo das parcelas e
imagens natildeo satildeo obrigatoacuterias
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
50
641 Formato do Wrapper
O wrapper gerado por esta aplicaccedilatildeo fornece a URL na qual um termo de
busca deve ser submetido e um conjunto de seletores CSS que especifica aonde os
dados devem ser buscados em um documento HTML O formato eacute exemplificado
abaixo
httpwwwamericanascombrbuscalttermgt
hproduct gt a
n
a
parcel
sale
photo
A primeira linha fornece a URL que deve ser formatada e requisitada para
realizar uma busca na fonte de dados A aplicaccedilatildeo que faz uso do wrapper sim-
plesmente substitui a string ldquolttermgtrdquo pelo termo de busca desejado efetua uma
requisiccedilatildeo e transforma o documento em uma aacutervore DOM
A segunda linha fornece um seletor que retorna todos os anuacutencios de pro-
dutos A aplicaccedilatildeo deveraacute iterar sobre cada elemento retornado por esse seletor
usando os seletores descritos nas linhas seguintes para recuperar os atributos
Da terceira linha em diante satildeo especificados os seletores para tiacutetulo do
produto link parcelas preccedilo e imagem respectivamente Nos seletores tiacutetulo
parcelas e preccedilo o parser HTML deve simplesmente recuperar a informaccedilatildeo tex-
tual contida dentro do noacute retornado enquanto que no seletor ldquoimagemrdquo ele deve
recuperar o dado contido no atributo HTML ldquosrcrdquo e no seletor link ele deve recu-
perar o dado contido no atributo ldquohrefrdquo
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
51
As informaccedilotildees retornadas podem entatildeo ser manipuladas da maneira mais
conveniente pela aplicaccedilatildeo armazenadas em banco de dados exibidas para o usuaacute-
rio etc
642 Definindo Seletores CSS para os Anuacutencios
Como comentado anteriormente a entrada para o algoritmo de geraccedilatildeo de
wrapper eacute um padratildeo previamente detectado Cada um por sua vez possui um
conjunto de elementos que provavelmente satildeo os anuacutencios (referenciados pelos
ponteiros)
O primeiro seletor CSS que se faz necessaacuterio eacute o que retornaraacute todos os
anuacutencios Portanto o algoritmo percorre cada elemento do padratildeo armazenando
seu seletor em um vetor de ocorrecircncias Ao fim deste processo o seletor que mais
se repete no vetor eacute definido como o seletor CSS dos produtos
ocorrencias = []
for (cada elemento element em pattern) do
ocorrencias[] = seletorCSS(element)
return maisRepetido(ocorrencias)
643 Extraccedilatildeo do Tiacutetulo do Produto
Para que o tiacutetulo do produto seja extraiacutedo um algoritmo percorre todos
os noacutes do elemento verificando se o termo de busca estaacute contido na informaccedilatildeo
textual do noacute Na maior parte dos casos o tiacutetulo do anuacutencio conteacutem os termos de
busca
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
52
Assim que o algoritmo encontra um noacute que obedece a essa regra o seletor
CSS que permite identificaacute-lo eacute armazenado em um vetor de ocorrecircncias O pro-
cesso eacute repetido ateacute que todos os noacutes de todos elementos tenham sido analisados
O seletor CSS que mais se repete no vetor de ocorrecircncias eacute definido como
o seletor para tiacutetulo de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (estaContido(termoDeBusca no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
644 Extraccedilatildeo do Link do Produto
O algoritmo inicia percorrendo todos os noacutes de um elemento em busca do
elemento ldquoardquo que eacute a tag HTML para links Todas as ocorrecircncias tem seu atributo
ldquohrefrdquo armazenados assim como o seletor CSS que permitem identificaacute-los Essa
fase eacute realizada para todos os noacutes de todos os elementos
Com o vetor de ocorrecircncias computado o algoritmo remove todos os links
que apontam para o mesmo documento Isso porque o link para um produto natildeo
pode se repetir cada anuacutencio eacute heterogecircneo e possui sua proacutepria paacutegina uacutenica
Links que referenciam a mesma paacutegina em diferentes anuacutencios satildeo ruiacutedos e por-
tanto satildeo removidos
Nos dados remanescentes o seletor CSS que mais se repete eacute identificado
como seletor para link de produto
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
53
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == a)
ocorrencias[] = [no-gthref seletorCSS(no)]
for (cada elemento ocorrencia em ocorrencias)
for (cada elemento ocorrencia2 em ocorrencias)
if (ocorrencia = ocorrencia2)
if (ocorrencia[0] == ocorrencia2 [0])
remove(ocorrencia)
return maisRepetido(ocorrencias)
645 Extraccedilatildeo do Parcelamento do Produto
A extraccedilatildeo das parcelas eacute realizada de forma bastante trivial o algoritmo
verifica se o conteuacutedo textual dos noacutes de cada elemento obedece agrave seguinte expres-
satildeo regular (Regex)
[0-9](x|X) (de )R$( )[0 -9]+([0 -9])( [0 -9])
Qualquer texto com os formatos ldquo12x de R$50rdquo ldquo12X R$50rdquo etc seraacute
reconhecido pela regex acima Quando isso acontecer o seletor CSS que identifica
o elemento eacute armazenado no vetor de ocorrecircncias
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
54
Por fim o seletor que mais se repete no vetor eacute definido como a regra de
traduccedilatildeo para o atributo de parcelamento
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
for (cada elemento no em element)
if (preg_match(regex no-gttext))
ocorrencias[] = seletorCSS(no)
break
return maisRepetido(ocorrencias)
646 Extraccedilatildeo do Preccedilo do Produto
Assim como nas etapas anteriormente realizadas o algoritmo inicia per-
correndo todos os noacutes de cada elemento verificando se a string ldquoR$rdquo estaacute contida
na informaccedilatildeo textual Em caso positivo eacute necessaacuterio que ela natildeo obedeccedila agrave regex
exibida na etapa anterior ou seja que a informaccedilatildeo natildeo seja de valor de parcelas
Caso a informaccedilatildeo respeite agraves duas regras o valor numeacuterico da string e o seletor
CSS eacute armazenado no vetor de ocorrecircncias
Entretanto os anuacutencios de produtos costumam exibir mais de um valor de
preccedilo como demonstrado na FIGURA 13 O algoritmo necessita entatildeo escolher o
elemento mais provaacutevel de ser o preccedilo correto
Apoacutes uma anaacutelise no conjunto inicial de lojas verificou-se que o com-
portamente mais comum eacute a exibiccedilatildeo do preccedilo praticado anteriormente e o novo
preccedilo Como pode ser visto na FIGURA 13 todas as lojas exibem algo do tipo
ldquoDe R$ 100000 por R$ 80000rdquo O algoritmo entatildeo faz a seguinte verificaccedilatildeo
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
55
Figura 13 Demonstraccedilatildeo dos variados atributos de preccedilo que satildeo exibidos em ummesmo anuacutencio
1 O valor numeacuterico e o seletor CSS satildeo guardados no vetor de ocorrecircncias
quando o noacute conteacutem a string ldquoR$rdquo
2 Se o algoritmo encontra outro noacute com a string ldquoR$rdquo dentro do mesmo ele-
mento ele faz uma simples verificaccedilatildeo se o preccedilo verificado for menor que
o anteriormente encontrado e eacute maior que 20 dele o uacuteltimo registro ar-
mazenado no vetor de referecircncias eacute removido e os valores pertinentes ao noacute
atual satildeo armazenados
for (cada elemento element em pattern) do
ocorrencias = []
regex = rsquo[0-9](x|X) (de )R$( )[0-9]+([0-9])([0-9])rsquo
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
56
precoEncontrado = 0
for (cada elemento no em element)
if (estaContido(rsquoR$rsquo no-gttext)
ampamp preg_match(regex no-gttext))
precoAt = valorNumerico(no-gttext)
if (precoEncontrado == 1)
precoAnt = ultimoRegistro(ocorrencias )[0]
if (precoAnt lt precoAt)
ampamp precoAtprecoAnt gt 02)
remove(ultimoRegistro(ocorrencias))
ocorrencias[] = [precoAt seletorCSS(no)]
else
ocorrencias[] = [precoAt seletorCSS(no)]
precoEncontrado++
return maisRepetido(ocorrencias)
Apoacutes todos os elementos terem sido analisados o seletor que mais vezes
ocorre no vetor de ocorrecircncias eacute definido como o seletor para o preccedilo dos produtos
647 Extraccedilatildeo da Imagem do Produto
Na etapa de extraccedilatildeo de imagens o algoritmo inicia percorrendo todos
os noacutes de cada elemento ateacute que ele encontre um noacute do tipo ldquoimgrdquo Quando isso
acontece a localizaccedilatildeo da imagem (atributo ldquosrcrdquo) e o seletor css satildeo armazenados
no vetor de ocorrecircncias
No entanto a cada nova inserccedilatildeo o algoritmo verifica se a mesma imagem
jaacute natildeo foi inserida no vetor checando se a localizaccedilatildeo da imagem eacute uacutenica Isso eacute
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
57
feito porque todo produto heterogecircneo possui sua proacutepria imagem portanto as que
se repetem satildeo ruiacutedos como mostrado na FIGURA 14
Figura 14 Demonstraccedilatildeo da repeticcedilatildeo de imagens em diversos anuacutencios diferen-tes
Por fim o seletor que mais se repete no vetor de ocorrecircncias eacute definido
como o tradutor para o atributo de imagens de produto
for (cada elemento element em pattern) do
ocorrencias = []
for (cada elemento no em element)
if (no-gtnodeName == img)
flag = false
for (cada elemento ocorrencia em ocorrencias)
if (ocorrencia[0] == no-gtsrc)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
58
flag = true
break
if (flag)
ocorrencias[] = [no-gtsrc seletorCSS(no)]
return maisRepetido(ocorrencias)
65 Implementaccedilatildeo do Protoacutetipo
O protoacutetipo foi implementado em PHP usando programaccedilatildeo orientada a
objetos (OOP - Object-Oriented Programming) para possibilitar maior reuso e
facilidade de manutenccedilatildeo do coacutedigo-fonte
Como mencionado anteriormente o parser HTML utilizado para converter
documentos HTML em aacutervores DOM foi o phpQuery
Os wrappers que compotildeem o protoacutetipo satildeo previamente gerados pelo sys-
tem designer e salvos em database MySQL no formato JSON
651 Interface do Protoacutetipo
Para que os experimentos pudessem ser realizados com os wrappers gera-
dos foi implementada uma interface para submissatildeo de termos de busca e exibiccedilatildeo
dos resultados encontrados
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
59
Figura 15 Interface inicial do protoacutetipo
A primeira interface com que o usuaacuterio depara-se exibida na FIGURA
15 exibe as uacuteltimas buscas realizadas e um campo aonde um produto marca ou
modelo pode ser pesquisado
Ao digitar um termo e submeter o formulaacuterio cada loja de e-commerce
eacute requisitada e o wrapper correspondente que foi previamente gerado e estaacute na
database traduz o documento HTML em informaccedilotildees relevantes Os resultados
satildeo entatildeo exibidos para o usuaacuterio como mostrado na FIGURA 16
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
60
Figura 16 Interface do protoacutetipo exibindo resultados para a busca por ldquogalaxynoterdquo
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
61
7 Resultados e Discussatildeo
Realizou-se dois tipos de experimentos para a validaccedilatildeo dos resultados do
shopbot
1 Verificaccedilatildeo da Detecccedilatildeo de Padrotildees para cada fonte de dados foi verifi-
cado se o conjunto de padrotildees conteacutem o padratildeo referente aos produtos Para
realizar tal verificaccedilatildeo todos os padrotildees detectados foram imprimidos na
tela
2 Geraccedilatildeo de um wrapper vaacutelido foi verificado se o shopbot retorna um
wrapper vaacutelido para cada fonte de dados
Para ambos os experimentos acima existem dois resultados possiacuteveis quando
a detecccedilatildeo de padrotildees ocorre com sucesso e quando um wrapper eacute corretamente
gerado o resultado eacute obtido com 100 de sucesso Caso contraacuterio o resultado natildeo
eacute obtido e haacute 0 de sucesso Portanto o resultado dos experimentos eacute descrito por
duas polaridades sim quando o resultado eacute obtido e natildeo quando o experimento
falha
71 Resultados da Detecccedilatildeo de Padrotildees
A etapa de detecccedilatildeo de padrotildees foi inicialmente testada no conjunto inicial
de 13 lojas de e-commerce Os resultados satildeo descritos na Tabela 11
Estes resultados mostram que o desempenho da etapa de detecccedilatildeo de pa-
drotildees foi completamente satisfatoacuteria alcanccedilando 100 de sucesso O padratildeo que
contecircm os anuacutencios de produtos foram encontrados em todas as 13 lojas de e-
commerce estabelecidas no conjunto inicial de testes
Foi realizado entatildeo um novo experimento em um conjunto com mais 10
fontes de dados para validar o algoritmo e garantir que ele natildeo seja direcionado
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
62
Loja Padratildeo de Produtos DetectadoDafiti SimShoptime SimSubmarino SimNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra SimPontoFrio SimMagazineLuiza Sim
Quadro 11 Resultado da detecccedilatildeo de padrotildees no conjunto de fonte de dados ini-cialmente estabelecido
para as lojas de e-commerce contidas no conjunto inicial Os resultados satildeo des-
critos na Tabela 12
Como pode-se verificar o algoritmo de detecccedilatildeo de padrotildees alcanccedilou 70
de sucesso no conjunto adicional os problemas verificados foram
1 Taqi O algoritmo foi incapaz de localizar o padratildeo
2 Loja Easycombr Houve problema com a codificaccedilatildeo dos caracteres e o
parser natildeo foi executado impossibilitando o prosseguimento da execuccedilatildeo
do algoritmo
3 Leader Houve problemas na execuccedilatildeo do parser HTML impossibilitando
a manipulaccedilatildeo do documento e a execuccedilatildeo do algoritmo
Excluindo-se problemas teacutecnicos o algoritmo falhou em apenas uma loja
de e-commerce o que garante um resultado satisfatoacuterio
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
63
Loja Padratildeo de Produtos DetectadoKaBuM SimColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 12 Resultado da detecccedilatildeo de padrotildees no conjunto adicional de 10 lojas
72 Resultados da Geraccedilatildeo de Wrapper
Ainda que os resultados dos experimentos na etapa de detecccedilatildeo de padrotildees
sejam animadores sabe-se que o objetivo do shopbot eacute a geraccedilatildeo de um wrapper
Portanto a detecccedilatildeo de padrotildees eacute essencial para que o algoritmo possa prosseguir
mas a mensuraccedilatildeo da qualidade do shopbot deve ser realizada atraveacutes da verifica-
ccedilatildeo da geraccedilatildeo correta de wrappers
Assim como nos experimentos anteriores os testes foram realizados pri-
meiramente com o conjunto inicial de lojas Os resultados estatildeo descritos na Ta-
bela 13
Faz-se necessaacuterio novamente ressaltar que um wrapper eacute considerado vaacute-
lido quando possui no miacutenimo as regras para extraccedilatildeo de tiacutetulo link e preccedilo Por-
tanto como pode-se observar na Tabela 13 trecircs wrappers natildeo foram gerados
O motivo para essa falha eacute que as lojas Submarino Extra e PontoFrio
natildeo possuem os preccedilos dos anuacutencios no documento HTML Ele eacute dinacircmicamente
exibido atraveacutes da execuccedilatildeo de um script que eacute realizada pelos motores JavaScript
dos navegadores
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
64
Loja Wrapper Corretamente GeradoDafiti SimShoptime SimSubmarino NatildeoNethoes SimWalMart SimCompraFaacutecil SimRicardoEletro SimAmericanas SimSaraiva SimFnac SimExtra NatildeoPontoFrio NatildeoMagazineLuiza Sim
Quadro 13 Resultado da geraccedilatildeo de wrapper no conjunto de fonte de dados inici-almente estabelecido
O parser HTML natildeo possui a capacidade de interpretar scripts e portanto
o valor do produto natildeo estaacute contido na aacutervore DOM fazendo com que o shopbot
natildeo consiga encontrar esse atributo Consequentemente o wrapper natildeo eacute correta-
mente gerado mesmo que ele consiga todos os outros atributos
Portanto para o conjunto inicial a taxa de sucesso do shopbot foi de 76
das 13 lojas de e-commerce foram gerados 10 wrappers corretamente
Foi entatildeo realizado um novo experimento com o conjunto adicional de 10
lojas de e-commerce os resultados estatildeo descritos na Tabela 14
Como pode ser verificado foram gerados 6 wrappers corretamente garan-
tindo uma taxa de sucesso de 60 no conjunto adicional Os problemas encontra-
dos foram
1 Taqi Loja Easycombr e Leader A etapa de detecccedilatildeo de padrotildees havia
falhado para essas 3 lojas portanto era esperado que a etapa de geraccedilatildeo de
wrapper tambeacutem falhasse
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
65
Loja Wrapper Corretamente GeradoKaBuM NatildeoColombo SimInsinuantecom SimTaqi NatildeoLoja Easycombr NatildeoGirafacombr SimShopfatocom SimCentaurocombr SimClassic Tennis SimLeader Natildeo
Quadro 14 Resultado da geraccedilatildeo de wrapper em um conjunto de 10 lojas
2 KaBuM O algoritmo foi incapaz de detectar corretamente todos os atribu-
tos retornando um wrapper invaacutelido
Levando-se em conta todas as lojas de e-commerce analisadas O shop-
bot possui uma taxa de sucesso de 73 sendo que a maior causa das falhas satildeo
atributos dinacircmicamente exibidos por scripts ou problemas na execuccedilatildeo do parser
HTML
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
66
8 Conclusotildees e Trabalhos Futuros
Serviccedilos de Shopping Comparison tem sido amplamente utilizados como
demonstrado por Wan (2009) Devido a isto se faz necessaacuterio soluccedilotildees que sejam
capazes de identificar atributos de produtos (tiacutetulo preccedilo imagem etc) Esses
agentes inteligentes que realizam tais tarefas satildeo chamados de shopbots (agentes
inteligentes de Shopping Comparison)
Portanto o objetivo deste trabalho foi elaborar um conjunto de procedi-
mentos e regras que compotildeem a arquitetura de um shopbot Como demonstrado
no capiacutetulo 7 o algoritmo proposto conseguiu gerar um wrapper reaproveitaacutevel e
correto para 73 das lojas de e-commerce testadas Ainda que o nuacutemero de fontes
de dados seja limitado a amostra cobriu as principais lojas de varejo on-line do
Brasil o que demonstra uma boa taxa de eficaacutecia
Conclui-se entatildeo que o protoacutetipo proposto tem potencial para ser empre-
gado em uma aplicaccedilatildeo real de Shopping Comparison coletando dados de muacutelti-
plas fontes de dados e apresentando ao consumidor qual loja de e-commerce ofe-
rece o melhor preccedilo
No entanto ainda que resultados satisfatoacuterios tenham sido alcanccedilados eles
podem ser melhorados atraveacutes do uso de ferramentas de HTML parser mais robus-
tas e atualizadas Como mencionado no capiacutetulo anterior lojas de e-commerce que
exibem o preccedilo dinamicamente atraveacutes de JavaScript constituem uma limitaccedilatildeo
ao protoacutetipo proposto visto que a ferramenta utilizada (phpQuery) natildeo consegue
identificar tais atributos
Aleacutem disso o shopbot pode ser incrementado atraveacutes da adiccedilatildeo de regras
e procedimentos que identifiquem outros atributos tais como frete graacutetis meios
de pagamento localizaccedilatildeo do produto etc
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
67
Por fim propotildee-se um estudo mais profundo dos casos em que o algoritmo
falhou para que as teacutecnicas sejam refinadas e consequentemente o algoritmo seja
melhorado Dessa forma gerando resultados aperfeiccediloados
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
68
REFEREcircNCIAS
BOS B CcedilELIK T HICKSON I LIE H W Cascading Style
Sheets Level 2 Revision 1 (CSS 21) Specification [Sl] jun 2011
Httpwwww3orgTR2011REC-CSS2-20110607
CHEN Y SUDHIR K When shopbots meet emails Implications for price
competition on the internet In Working Paper Series MK Marketing [Sl sn]
2001
CONSORTIUM W W W Introduction to HTML 4 December 1999 [Online
acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwwww3orgTR-
html401introintrohtmlh-22gt
CONSORTIUM W W W XHTML2 Working Group Home Page December
2010 [Online acessado em 14 de Abril de 2012] Disponiacutevel em lthttpwww-
w3orgMarkUpgt
CONSORTIUM W W W HTML amp CSS 2011 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpwwww3orgstandardswebdesign-
htmlcsswhatcssgt
COOLEY R MOBASHER B SRIVASTAVA J Web mining information and
pattern discovery on the world wide web In Tools with Artificial Intelligence
1997 Proceedings Ninth IEEE International Conference on [Sl sn] 1997 p
558 ndash567
COWIE J LEHNERT W Information extraction Commun ACM ACM New
York NY USA v 39 n 1 p 80ndash91 jan 1996 ISSN 0001-0782
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
69
CUDNIK T phpQuery - jQuery port to PHP 2009 [Online acessado em 15 de
Abril de 2012] Disponiacutevel em lthttpcodegooglecompphpquerygt
DOORENBOS R B ETZIONI O WELD D S A scalable comparison-
shopping agent for the world-wide web In In Proceedings of the First
International Conference on Autonomous Agents [Sl] ACM Press 1997 p
39ndash48
EBIT Relatoacuterio Web Shoppers 2011 Acessado em 9 de Abril de 2012
Disponiacutevel em lthttpwwwwebshopperscombrgt
FIRAT A Information integration using contextual knowledge and ontology
merging Tese (Doutorado) 2003 AAI0805734
HAMMOND K BURKE R MARTIN C LYTINEN S Faq finder a
case-based approach to knowledge navigation In Artificial Intelligence for
Applications 1995 Proceedings 11th Conference on [Sl sn] 1995 p 80
ndash86
HUANG S-L TSAI Y-H Designing a cross-language comparison-shopping
agent Decis Support Syst Elsevier Science Publishers B V Amsterdam
The Netherlands The Netherlands v 50 n 2 p 428ndash438 jan 2011 ISSN
0167-9236
JuacuteNIOR J R C Desenvolvimento de uma Metodologia para Mineraccedilatildeo de
Textos Disserta (Mestrado) mdash Pontifiacutecia Universidade Catoacutelica do Rio de
Janeiro-PUC-RIO 2007
KEPHART J O GREENWALD A R Shopbot economics In Proceedings of
the third annual conference on Autonomous Agents New York NY USA ACM
1999 (AGENTS rsquo99) p 378ndash379 ISBN 1-58113-066-X
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
70
KUSHMERICK N Wrapper induction for information extraction Tese
(Doutorado) 1997 AAI9819266
MAAREK Y S SHAUL I Z B Automatically organizing bookmarks per
contents Computer Networks and ISDN Systems v 28 n 7sbquoAumligrave11 p 1321 ndash
1333 1996 ISSN 0169-7552 ltcetitlegtProceedings of the Fifth International
World Wide Web Conference 6-10 May 1996ltcetitlegt Disponiacutevel em
lthttpwwwsciencedirectcomsciencearticlepii0169755296000244gt
MCKENNA R Creating value in the network economy In TAPSCOTT D
(Ed) Boston MA USA Harvard Business School Press 1999 cap Real-time
marketing p 145ndash158 ISBN 0-87584-911-3
MONTGOMERY A L HOSANAGAR K KRISHNAN R CLAY K B
(EMAIL S R K W I T W PROFESSOR R F C Designing a better shopbot
Management Science v 50 p 189ndash206 2004
NYEIN S S Mining contents in web page using cosine similarity In Computer
Research and Development (ICCRD) 2011 3rd International Conference on
[Sl sn] 2011 v 2 p 472 ndash475
PHPNET O que eacute PHP 2012 [Online acessado em 15 de Abril de 2012]
Disponiacutevel em lthttpwwwphpnetmanualpt BRintro-whatisphpgt
PRASAD R KUMARI V RAJU K Comparison shopping agents the
essential characteristics and challenges to be met In Intelligent Agent
Multi-Agent Systems 2009 IAMA 2009 International Conference on [Sl sn]
2009 p 1 ndash2
ROBIE J HORS A L NICOL G HeacuteGARET P L CHAMPION
M WOOD L BYRNE S Document Object Model (DOM) Level 2 Core
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
71
Specification [Sl] nov 2000 Httpwwww3orgTR2000REC-DOM-Level-
2-Core-20001113
SANTOS R Conceitos de mineraccedilatildeo de dados na web In TEIXEIRA M M
TEIXEIRA C A C TRINTA F A M FARIAS P P M (Ed) XV Simpoacutesio
Brasileiro de Sistemas Multimiacutedia e Web VI Simpoacutesio Brasileiro de Sistemas
Colaborativos ndash Anais [Sl sn] 2009 p 81ndash124
SMITH M The impact of shopbots on electronic markets Journal of
the Academy of Marketing Science Springer Netherlands v 30 p 446ndash
454 2002 ISSN 0092-0703 101177009207002236916 Disponiacutevel em
lthttpdxdoiorg101177009207002236916gt
SMITH M D BRYNJOLFSSON E Consumer decision-making at an internet
shopbot Brand still matters The Journal of Industrial Economics Blackwell
Publishers Ltd v 49 n 4 p 541ndash558 2001 ISSN 1467-6451 Disponiacutevel em
lthttpdxdoiorg1011111467-645100162gt
TATBUL N KARPENKO O CONVEY C YAN J Data Integration
Services [Sl] May 2001
WAN Y Comparison-Shopping Services and Agent Designs [Sl] IGI Global
2009 1ndash336 p
WAN Y PENG G Whatrsquos next for shopbots Computer v 43 n 5 p 20 ndash26
may 2010 ISSN 0018-9162
YANG J CHOI J KIM J HAM H LEE K A more scalable comparision
shopping agent In In Procrsquo EIS2000 Engineering of Intelligent Systems [Sl
sn] 2000 p 766ndash772
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
72
YANG S J H ZHANG J TSAI S T C An automatic semantic segment
detection service for html documents In Proceedings of the 2008 IEEE
International Conference on Services Computing - Volume 1 Washington DC
USA IEEE Computer Society 2008 (SCC rsquo08) p 210ndash217 ISBN 978-0-7695-
3283-7-01 Disponiacutevel em lthttpdxdoiorg101109SCC2008155gt
ZHANG J JING B The impacts of shopbots on online consumer search In
System Sciences (HICSS) 2011 44th Hawaii International Conference on [Sl
sn] 2011 p 1 ndash10 ISSN 1530-1605
ZHU X GOLDBERG A B Introduction to Semi-Supervised Learning
[Sl] Morgan amp Claypool Publishers 2009 (Synthesis Lectures on Artificial
Intelligence and Machine Learning)
Recommended