def parse(self, response):
        "Parsear por itens de uma pagina"
        categoria = response.css("h1").xpath("text()").extract()
        # validade = "" # Guanabara parece nao disponibilizar a validade das ofertas, apenas pro encarte
        for sel in response.css("div.produto"):
            titulo = sel.css("div.box-produtos-nome").xpath("text()")
            preco = sel.css("div.box-produtos-preco").xpath(
                "text()|span").xpath("text()")
            # if len( preco ) == 0 or len( titulo ) == 0:
            #     continue
            oferta = Oferta()
            oferta['mercado'] = 'Diamante'
            oferta['timestamp'] = str(datetime.date.today())
            oferta['titulo'] = titulo.extract()[0]
            oferta['preco'] = preco.extract()
            oferta['categoria'] = categoria
            oferta['validade'] = ""
            yield oferta

            # ESTA PARTE CO CODIGO E RESPONSAVEL POR PASSAR PARA A PROXIMA PAGINA DA MESMA CATEGORIA
            # SETINHA PARA A DIREITA

            next_page = response.css(
                "div.box > li:nth-child(5) > a:nth-child(1)::attr('href')")
            if next_page:
                url = response.urljoin(next_page[0].extract())
                yield scrapy.Request(url, self.parse)
 def parse(self, response):
     "Parsear ofertas internas"
     for href in response.css(
             "ul.lista-categorias > span > li > a::attr('href')"):
         url = response.urljoin(href.extract())
         yield scrapy.Request(url, callback=self.parse_products)
     "Parsear ofertas iniciais"
     validade = response.css("span#texto_validade_oferta").re(
         '\d{1,2}\/\d{1,2}\/\d{4}')
     for sel in response.css("ul.lista-ofertas > li"):
         titulo = filter(
             bool,
             map(unicode.strip,
                 sel.css(".descricao-oferta").xpath("text()").extract()))
         if not titulo:
             continue
         preco_frente = sel.css(".preco-oferta > .preco-frente").xpath(
             "text()").extract()
         preco_cents = sel.css(".preco-oferta > .preco-centavos").xpath(
             "text()").extract()
         oferta = Oferta()
         oferta['timestamp'] = str(datetime.date.today())
         oferta['titulo'] = titulo[0]
         oferta['mercado'] = 'Mundial'
         oferta['preco'] = preco_frente[0] + preco_cents[0]
         # TODO - Criar uma forma de categorizar essas ofertas
         oferta['categoria'] = ""
         oferta['quantidade'] = self.match_quantidade(sel)
         oferta['validade'] = validade[0]
         yield oferta
    def parse_tabs(self, response):
        "Parsear ofertas por categoria"
        categoria = response.css("div#breadcrumb a").xpath("text()").extract()
        validade = ""

        for sel in response.css("tbody tr"):
            titulo = sel.css("a span").xpath("text()").extract()
            preco = sel.css("strong").xpath("text()").extract()

            oferta = Oferta()
            oferta['mercado'] = 'Extra'
            oferta['timestamp'] = str(datetime.date.today())
            oferta['titulo'] = titulo
            oferta['preco'] = preco
            oferta['mercado'] = 'Extra'
            oferta['categoria'] = categoria
            if preco:
                yield oferta

# ESTA PARTE CO CODIGO E RESPONSAVEL POR PASSAR PARA A PROXIMA PAGINA DA MESMA CATEGORIA
# SETINHA PARA A DIREITA

            next_page = response.css("li.next a::attr('href')")
            if next_page:
                url = response.urljoin(next_page[0].extract())
                yield scrapy.Request(url, self.parse_tabs)
    def parse_tabs(self, response):
        "Parsear ofertas por pages"
        categoria = response.css("div.paginatorContainer > header > h2").xpath(
            "text()").extract()

        validade = ""  # Guanabara parece nao disponibilizar a validade das ofertas, apenas pro encarte

        for sel in response.css(".boxProduct"):
            titulo = sel.css("a.link").xpath("@title")

            if categoria == [u'Ofertas', u'Ofertas']:
                preco = sel.css("p.showcase-item__price--promo ").css(
                    "span.value").xpath("text()")
            else:
                preco = sel.css("p.showcase-item__price ").css(
                    "span.value").xpath("text()")

            oferta = Oferta()
            oferta['timestamp'] = str(datetime.date.today())
            oferta['titulo'] = titulo.extract()
            oferta['preco'] = preco.extract()
            oferta['mercado'] = 'Pao de Acucar'
            oferta['categoria'] = categoria[0]
            yield oferta

            next_page = response.css("a.icon--angle-right::attr('href')")
            if next_page:
                url = response.urljoin(next_page[0].extract())
                yield scrapy.Request(url, self.parse_tabs)
示例#5
0
 def parse_categories(self, response):
     "Parsear ofertas por categoria"
     categoria = response.css("div.title > h3").xpath("text()").extract()
     validade = ""  # Guanabara parece nao disponibilizar a validade das ofertas, apenas pro encarte
     for sel in response.css(".item"):
         titulo = sel.css("div.name").xpath("text()")
         preco = sel.css("span.number").xpath("text()")
         if len(preco) == 0 or len(titulo) == 0:
             continue
         oferta = Oferta()
         oferta['mercado'] = 'Guanabara'
         oferta['timestamp'] = str(datetime.date.today())
         oferta['titulo'] = titulo.extract()[0]
         oferta['preco'] = preco.extract()[0]
         oferta['categoria'] = categoria[0]
         oferta['validade'] = validade
         yield oferta
示例#6
0
    def parse(self,response):
        "Parsear ofertas por pagina"
        categoria = response.css("div.nome > h2").xpath("text()").extract()
        validade = "" # Guanabara parece nao disponibilizar a validade das ofertas, apenas pro encarte

        for sel in response.css("div.produtos ul li div.bloco_informacoes"):
            preco = sel.css("p.preco").xpath("text()").extract()
            titulo = sel.css("div.prod_info a").xpath("text()").extract()

            oferta = Oferta()
            oferta['timestamp'] = str( datetime.date.today() )
            oferta['titulo'] = titulo.extract()[0]
            oferta['mercado'] = 'Zona Sul'
            oferta['preco'] = preco.extract()[0]
            oferta['categoria'] = categoria[0]
            oferta['validade'] = validade
            yield oferta
 def parse_products(self, response):
     "Parsear ofertas por categoria"
     categoria = response.css("div.content-area > h3").xpath(
         "text()").extract()
     validade = response.css("span#validade_encarte").re(
         '\d{1,2}\/\d{1,2}\/\d{4}')
     for sel in response.css("ul#lista_ofertas-interna > li"):
         oferta = Oferta()
         oferta['timestamp'] = str(datetime.date.today())
         oferta['titulo'] = sel.css(".titulo-oferta-interna").xpath(
             "text()").extract()[0]
         oferta['preco'] = sel.css(".valor-oferta-interna").xpath(
             "text()").extract()[0]
         oferta['categoria'] = categoria[0]
         oferta['mercado'] = 'Mundial'
         oferta['quantidade'] = self.match_quantidade(sel)
         oferta['validade'] = validade[0]
         yield oferta
示例#8
0
    def parse_shop(self, response):
        "Parsear ofertas por loja"
        validade = response.css("div.local-oferta").css("p").css("i").xpath(
            "text()")
        loja = response.css("div.local-oferta").css("p").css("strong").xpath(
            "text()")
        for sel in response.css(".detalhe"):
            titulo = sel.css("p").xpath("text()")
            preco = sel.css("div.valor").css("span").xpath("text()").extract()
            preco_cents = sel.css("div.valor").css("sup").xpath(
                "text()").extract()

            oferta = Oferta()
            oferta['timestamp'] = str(datetime.date.today())
            oferta['mercado'] = 'Hortifruti'
            oferta['titulo'] = titulo.extract()[0]
            oferta['preco'] = preco[0] + preco_cents[0]
            oferta['categoria'] = ""
            oferta['validade'] = validade.extract()
            oferta['loja'] = loja.extract()
            yield oferta