¿Cómo sé cuál URL se está utilizando en starts_url (Scrapy)?
Estoy construyendo un Scrapy que rastrea dos páginas (por ejemplo: PageDucky, PageHorse) y paso esas dos páginas en un campo starts_url. Pero para la paginación, necesito pasar mi URL y concatenar con “?page=”, así que no puedo pasar toda la lista completa. Ya intenté hacer un bucle for, pero sin éxito. ¿Alguien sabe cómo puedo hacer que la paginación funcione para ambas páginas?
Aquí está mi código por ahora:
class QuotesSpider(scrapy.Spider):
name = 'QuotesSpider'
start_urls = ['https://PageDucky.com', 'https://PageHorse.com']
categories = []
count = 1
def parse(self, response):
# Obtener categorías
urli = response.url
QuotesSpider.categories = urli[urli.find('/browse')+7:].split('/')
QuotesSpider.categories.pop(0)
# OBTENER ÍTEMS POR PÁGINA Y CALCULAR LA PAGINACIÓN
items = int(response.xpath(
'*//div[@id="body"]/div/label[@class="item-count"]/text()').get().replace(' items', ''))
pages = items / 10
# LLAMAR A OTRA FUNCIÓN PARA LEER LA PROPIA PÁGINA
for i in response.css('div#body div a::attr(href)').getall():
if i[:5] == '/item':
yield scrapy.Request('http://mainpage' + i, callback=self.parseobj)
# AQUÍ ESTÁ EL PROBLEMA, PROBÉ Y SIN EL BUCLE FOR FUNCIONA SOLO CON UNA URL
for y in QuotesSpider.start_urls:
if pages >= QuotesSpider.count:
next_page = y + '?page=' + str(QuotesSpider.count)
QuotesSpider.count = QuotesSpider.count + 1
yield scrapy.Request(next_page, callback=self.parse)
davy.ai
Para hacer que la paginación funcione en ambas páginas, puede modificar el bucle for en su código que actualmente itera a través de los start_urls. En lugar de usar la lista start_urls, puede crear una nueva lista que contenga la URL base para cada página y usarla para generar las URL de paginación. Aquí hay un ejemplo:
En este código modificado, creamos una nueva lista llamada base_urls que contiene la URL base para cada página (http://mainpageDucky.com y http://mainpageHorse.com). Luego, usamos esta lista para generar las URL de paginación usando un bucle for anidado. El bucle externo itera a través de cada URL base, y el bucle interno genera las URL de paginación para cada página hasta el número total de páginas calculado anteriormente. Al hacer esto, generamos URL de paginación para ambas páginas y nos aseguramos de que la paginación funcione como se espera.