urljoin tutorial spider mercadolibre follow example español create python web-crawler scrapy

python - tutorial - Diferencia de araña de Scrapy entre páginas rastreadas y artículos raspados



scrapy mercadolibre (1)

Estoy escribiendo un Scrapy CrawlSpider que lee una lista de anuncios en la primera página, toma algo de información como los pulgares de los listados y las direcciones de AD, luego da una solicitud a cada una de estas direcciones de AD para tomar sus detalles.

Estaba trabajando y paginando aparentemente bien en el entorno de prueba, pero hoy tratando de hacer una carrera completa me di cuenta de que en el registro:

Rastreó 3852 páginas (a 228 páginas / min), raspó 256 elementos (a 15 elementos / min)

No entiendo la razón de esta gran diferencia entre las páginas rastreadas y los artículos raspados. ¿Alguien puede ayudarme a darme cuenta de dónde se están perdiendo esos artículos?

Mi código araña:

class MySpider(CrawlSpider): name = "myspider" allowed_domains = ["myspider.com", "myspider.co"] start_urls = [ "http://www.myspider.com/offers/myCity/typeOfAd/?search=fast", ] #Pagination rules = ( Rule ( SgmlLinkExtractor() , callback=''parse_start_url'', follow= True), ) #1st page def parse_start_url(self, response): hxs = HtmlXPathSelector(response) next_page = hxs.select("//a[@class=''pagNext'']/@href").extract() offers = hxs.select("//div[@class=''hlist'']") for offer in offers: myItem = myItem() myItem[''url''] = offer.select(''.//span[@class="location"]/a/@href'').extract()[0] myItem[''thumb''] = oferta.select(''.//div[@class="itemFoto"]/div/a/img/@src'').extract()[0] request = Request(myItem[''url''], callback = self.second_page) request.meta[''myItem''] = myItem yield request if next_page: yield Request(next_page[0], callback=self.parse_start_url) def second_page(self,response): myItem = response.meta[''myItem''] loader = myItemLoader(item=myItem, response=response) loader.add_xpath(''address'', ''//span[@itemprop="streetAddress"]/text()'') return loader.load_item()


Digamos que vas a tus primeras start_urls (en realidad solo tienes una) y en esta página solo hay un enlace de anclaje ( <a> ). Entonces tu araña rastrea la url href en este enlace y obtienes el control en tu devolución de llamada, parse_start_url . Y dentro de esta página tienes 5000 div''s con una clase hlist . Y supongamos que todas las 5000 de estas URL posteriores fueron devueltas 404, no encontradas.

En este caso, tendrías:

  • Páginas rastreadas: 5001
  • Artículos raspados: 0

Tomemos otro ejemplo: en su página de inicio de url tiene 5000 anclas, pero ninguna (como en cero) de esas páginas tiene ningún divs con un parámetro de clase de hlist .

En este caso, tendrías:

  • Páginas rastreadas: 5001
  • Artículos raspados: 0

Su respuesta se encuentra en la salida de registro de DEPURACIÓN.