Как я могу изменять start_urls каждый день во время cronjob динамически?

#python #scrapy

#python #scrapy

Вопрос:

У меня есть паук с динамическими start_urls. URL меняется каждый день. Из-за метода класса он меняется сразу после развертывания или запуска сервера и остается неизменным.

eskisehir.py

 
class EskisehirSpider(scrapy.Spider):
    now = datetime.datetime.today()- timedelta(days=1)
    now_time = now.strftime("%d.%m.%y")

    name = 'eskisehir'
    allowed_domains = ['www.esktb.org.tr']
    start_urls = ['http://esktb.org.tr/json/gunluk_bulten.php?tarih=' now_time]

    def parse(self, response):
        ###myparser###
  

Например, я развертываю свой проект 30.09.2020, и он должен меняться каждый день, но вчера я узнал, что URL-адрес остается неизменным, например http://esktb.org.tr/json/gunluk_bulten.php?tarih=30.09.20

Итак, как я могу менять start_urls каждый день при запуске сканера?

Ответ №1:

Для этого вам нужно поместить генератор ссылок в отдельный метод. Вы также можете обернуть его в @property и ссылаться на него как на свойство. Вот пример:

 class EskisehirSpider(scrapy.Spider):
    name = 'eskisehir'
    allowed_domains = ['www.esktb.org.tr']

    @property
    def start_urls(self):
        now = datetime.datetime.today() - timedelta(days=1)
        now_time = now.strftime("%d.%m.%y")
        return ['http://esktb.org.tr/json/gunluk_bulten.php?tarih='   now_time]

    def parse(self, response):
        print(f'start_urls is: {self.start_urls}')
        pass
  

Комментарии:

1. @MuratTemir Рад это слышать. Счастливого кодирования!