Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
1.2 kB
1
Indexable
Never
import scrapy


class MySpider(scrapy.Spider):
    name = 'my_spider'
    start_urls = ['http://example.com']  # URL de la page d'origine

    custom_settings = {
        'DOWNLOAD_DELAY': 0.5,  # Délai entre les requêtes (en secondes)
        'CONCURRENT_REQUESTS': 8,  # Nombre de requêtes simultanées
        'CONCURRENT_REQUESTS_PER_DOMAIN': 2,  # Nombre de requêtes simultanées par domaine
        'AUTOTHROTTLE_ENABLED': True,  # Activation de l'autorégulation du débit
    }

    def start_requests(self):
        yield scrapy.Request(url=self.start_urls[0], callback=self.parse)

    def parse(self, response):
        # Extraire les liens de la page initiale
        links = response.css('a::attr(href)').getall()

        for link in links:
            yield scrapy.Request(url=response.urljoin(link), callback=self.parse_xlsx)

    def parse_xlsx(self, response):
        # Extraire les liens avec l'extension "xlsx"
        xlsx_links = response.css('a[href$=".xlsx"]::attr(href)').getall()

        for link in xlsx_links:
            yield {
                'page_url': response.url,
                'xlsx_link': response.urljoin(link)
            }