Разрешить только внутренние ссылки внутри скрапа - PullRequest
2 голосов
/ 07 декабря 2011

У меня есть список URL, которые я хотел бы просмотреть - 3000 из них.

Я хотел бы пройти три уровня по каждому URL, НО я не хочу переходить на внешние URL - только ссылки в доменах моего стартового списка.

Я понимаю, что если бы я хотел сделать это всего несколькими URL, я бы просто заполнил список allowed_domains.

Однако, когда вы получаете 3000 URL, список allowed_domains слишком велик для Scrapy, чтобы справиться с ним (насколько я могу судить, он превращается в большой RegEx), поэтому он ломается ...

Есть идеи?

Что-то в списке "правил" было бы хорошо. rules = (Rule(SgmlLinkExtractor(allow = (<local_links_only??>)) ,callback = 'parse_item'),)

Или что-то в промежуточном программном обеспечении Offsite - в любом случае, чтобы получить ссылку-ссылку?

или пакетная работа? получить 50 URL одновременно? есть ли какие-нибудь хуки, позволяющие что-то подобное - я вижу start_requests - но нет обратного вызова для чего-то вроде finish_requests, который я мог бы использовать, чтобы снова заполнить список start_urls?

Guy

1 Ответ

2 голосов
/ 15 апреля 2013
  1. Используйте DepthMiddleware для контроля глубины запроса.
  2. Используйте allow_domains , чтобы избежать внешних URL.
  3. твик одновременные настройки для улучшения производительности.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...