Je suis en train de réaliser un programme permettant de scraper des offres d'emplois sur un site. Cependant, j'ai un problème : sur ce même site les liens sont programmés parfois avec des href relatifs parfois absolu (ex : parfois j'ai https://fr.indeed.com => correct, mais d'autres fois : /cmd/jobs => incorrect). Il faut donc vérifier avant l'envoi de chaque requête si cette deniere est correcte. Pour ce faire, j'ai codé une fonction dans les middlewares qui me permet de vérifier cela :
class IndeedDomainVerificationMiddleware:
def __init__(self, indeed_domain_url):
self.indeed_domain_url = indeed_domain_url
@classmethod
def from_crawler(cls, crawler):
return cls(indeed_domain_url=crawler.settings.get('INDEED_DOMAIN_URL'))
def process_request(self, request, spider):
if spider.name == 'Indeed':
print(request.url)
if self.indeed_domain_url not in request.url:
new_url = self.indeed_domain_url + request.url
print("New URL: %s" % new_url)
return request.replace(url=new_url)
else:
pass
return None
Jamais développé de middlewares de cette manière, pourquoi ne respectez vous pas la documentation ?
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Désolé, j'ai cru que vous utilisiez Django, ça ressemblait beaucoup...
- Edité par fred1599 17 janvier 2024 à 11:30:47
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Scraping avec Scrapy
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)