73
LEANDRO SILVA ALONSO AGENTE INTELIGENTE DE SHOPPING COMPARISON ATRAVÉS DE DETECÇÃO DE PADRÕES LAVRAS - MG 2012

LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

Embed Size (px)

Citation preview

Page 1: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 2: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 3: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 4: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 5: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 6: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 7: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 8: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 9: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 10: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 11: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 12: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 13: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 14: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 15: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 16: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 17: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 18: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 19: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 20: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 21: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 22: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 23: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 24: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 25: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 26: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 27: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 28: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 29: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 30: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 31: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 32: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 33: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 34: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 35: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 36: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 37: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 38: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 39: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 40: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 41: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 42: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 43: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 44: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 45: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 46: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 47: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 48: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 49: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 50: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 51: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 52: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 53: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 54: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 55: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 56: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 57: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 58: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 59: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 60: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 61: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 62: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 63: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 64: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 65: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 66: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 67: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 68: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 69: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 70: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 71: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS
Page 72: LEANDRO SILVA ALONSO - repositorio.ufla.brrepositorio.ufla.br/bitstream/1/5252/1/MONOGRAFIA_Agente... · modificou através do surgimento do comércio online, também chamado de

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)

  • Introduccedilatildeo
    • Contextualizaccedilatildeo e Motivaccedilatildeo
    • Objetivos
    • Organizaccedilatildeo do Trabalho
      • Linguagem HTML
        • HTML
        • Document Object Model
        • Seletores CSS
        • HTML Parsers
          • Web Mining
            • Web Content Mining
            • Wrapper
              • Shopping Comparison
                • Serviccedilos de Shopping Comparison
                • Shopbot
                • Impactos no Comeacutercio Eletrocircnico
                  • Metodologia
                    • Meacutetodos
                      • Entendimento do Problema
                        • Material
                          • PHP
                          • phpQuery
                          • Ambiente Computacional
                              • Arquitetura do Shopbot proposto
                                • Determinaccedilatildeo dos Termos de Busca adequados
                                  • Detecccedilatildeo de Padrotildees
                                  • Submissatildeo da URL e Termos de Busca
                                  • Anaacutelise do HTML e Conversatildeo em Document Object Model
                                    • Eliminaccedilatildeo de Ruiacutedos
                                    • Ordenaccedilatildeo dos Resultados
                                    • Geraccedilatildeo do Wrapper
                                      • Formato do Wrapper
                                      • Definindo Seletores CSS para os Anuacutencios
                                      • Extraccedilatildeo do Tiacutetulo do Produto
                                      • Extraccedilatildeo do Link do Produto
                                      • Extraccedilatildeo do Parcelamento do Produto
                                      • Extraccedilatildeo do Preccedilo do Produto
                                      • Extraccedilatildeo da Imagem do Produto
                                        • Implementaccedilatildeo do Protoacutetipo
                                          • Interface do Protoacutetipo
                                              • Resultados e Discussatildeo
                                                • Resultados da Detecccedilatildeo de Padrotildees
                                                • Resultados da Geraccedilatildeo de Wrapper
                                                  • Conclusotildees e Trabalhos Futuros
                                                  • REFEREcircNCIAS