Я использую this CrawlerSpider example как «позвоночник» для моего Crawler.Как сделать два правила CrawlerSpider для сотрудничества
Я хочу, чтобы реализовать эту идею:
Первое правило следует ссылки. Затем согласованные ссылки передаются далее во второе правило, где второе правило соответствует новым ссылкам в соответствии с шаблоном и вызывает обратный вызов на них.
Например, у меня есть правила:
...
start_urls = ['http://play.google.com/store']
rules = (
Rule(SgmlLinkExtractor(allow=('/store/apps',))),
Rule(SgmlLinkExtractor(allow=('/details\?id=',)), callback='parse_app'),
)
...
Как я ожидал, что синтаксический анализатор будет работать:
Открыть http://play.google.com/store 'и сопоставляет первый URL' https://play.google.com/store/apps/category/SHOPPING/collection/topselling_free '
Pass найдено URL ('https://play.google.com/store/apps/category/SHOPPING/collection/topselling_free') на второе правило
Второе правило пытается сопоставить его шаблон (allow = ('. */Details \? Id =',))) и, если он соответствует, вызывает обратный вызов 'parse_app' для этого URL-адреса.
Atm, Crawler просто просматривает все ссылки и не разбирает ничего.
вы имеете в виду, что вы хотите делать для анализа ссылок, соответствующих шаблону «/store/apps/.*/details\?id=»? –
@XuJiawan, да, но сначала мне нужно пройти все ссылки, соответствующие первому правилу, и только затем извлечь из этих сопоставленных URL других URL-адресов, соответствующих второму правилу. – dimazubrik