# -*- coding: utf-8 -*- import scrapy class MascNomeSpider(scrapy.Spider): name = "masc_nome" allowed_domains = ["dicionariodenomesproprios.com.br"] start_urls = ( 'http://www.dicionariodenomesproprios.com.br/nomes-masculinos/1/', ) def parse(self, response): # Usando o xpath, selecionamos a tag "a" # com o atributo class "lista-nome" e pegamos apenas o texto # você pode ver isso abaixo nomes = response.xpath('//a[@class="lista-nome"]/text()').extract() # Outra coisa, assim como o nome sugestivo, a resposta vem do response. # Ou seja, é como se o html viesse do response e dele fazemos a query # em xpath # Aqui fazemos um simples for pegando o nome da lista que é # criada e salvamos o nome em um arquivo. for nome in nomes: print nome.encode("utf-8") arq = open("nomes_masculinos.txt", 'a') arq.write("%s\n" % nome.encode("utf-8")) arq.close() # Novamente, pegamos a resposta e verificamos com xpath se existe # uma próxima pagina, verifique a tag e o atributo da setinha # de proxima pagina no final da pagina do site. prox_pagina = response.xpath('//a[@class="step-pag"]/@href').extract() URL_proxpag = "http://www.dicionariodenomesproprios.com.br%s" % prox_pagina[len(prox_pagina)-1] print "PAGINA >>>> %s" % URL_proxpag # Aqui falamos, se existir uma proxima pagina, mande para fazer um novo # request nessa proxima pagina, passando a URL e o Callback para o parser if prox_pagina: yield scrapy.Request(url=URL_proxpag, callback=self.parse)