Sta alleen interne links binnen scrapy toe

Ik heb een lijst met URL's die ik zou willen schrapen - 3000 van hen.

Ik wil graag drie niveaus diep gaan op elke URL, MAAR ik wil niet naar externe URL's gaan - alleen links binnen de domeinen van mijn startlijst.

Ik begrijp dat als ik dit wilde doen met slechts enkele URL's, ik gewoon de lijst allowed_domains zou invullen.

Wanneer je echter 3000 urls bereikt, is de allowed_domains -lijst te groot voor Scrapy om te verwerken (het verandert het in een grote RegEx voor zover ik kan zien) dus het breekt ...

Om het even welke ideeën?

Something in the 'rules' list would be good. rules = (Rule(SgmlLinkExtractor(allow = (

Of iets in de Offsite middleware - hoe dan ook om de verwijzende link te bemachtigen?

of de klus klaren? krijg 50 urls tegelijk? zijn er haken om iets als dit toe te staan ​​- ik kan start_requests zien - maar geen callback voor iets als finish_requests dat ik kan gebruiken om de start_urls lijst opnieuw?

Vent

2
Bedoel je dat deze 3000 URL's afkomstig zijn van verschillende websites? Als dat zo is, denk ik dat je beter een aparte spin hebt voor elk van hen.
toegevoegd de auteur warvariuc, de bron

1 antwoord

  1. Gebruik DepthMiddleware om de diepte van het verzoek te regelen.
  2. Gebruik allow_domains om externe URL's te vermijden.
  3. Tweak gelijktijdige instellingen om betere prestaties te verkrijgen.
2
toegevoegd