Vous pouvez utiliser un middleware personnalisé:
class MeasureMiddleware:
requests = []
def process_request(self, request, spider):
# store the time and url of every outgoing request
self.requests.append((request.url, datetime.now()))
def process_response(self, request, response, spider):
# for everyone response check if one of tracked requests cameback
# if so, print start time and current time
item = [r for r in self.requests if r[0] == request.url]
if not item:
return
url, start_date = item[0]
logging.info(f'request {url} {start_date} - {datetime.now()}')
self.requests.remove(item)
Activez ensuite le middleware téléchargeur
DOWNLOADER_MIDDLEWARES = {
'myproject.middlewares.MeasureMiddleware': 543,
}
Il convient de noter qu'en raison de la nature async de scrapy il ne sera pas ms précises, mais il devrait être assez précis pour donner une vue d'ensemble générique.
Ceci est une question très large .. cherchez-vous à déterminer si votre puissance d'analyse est limitée par rapport à votre vitesse de téléchargement? Je voudrais faire un tour rapide de scrapy's [aperçu de l'architecture] (https://docs.scrapy.org/en/latest/topics/architecture.html) et revenir avec quelque chose de plus spécifique .. – Aaron