可以的,在Crawl.py中类CrawlSpider的_requests_to_follow方法里会根据你自定义的spider.py中的rules(规则集)中的每个规则rule提取url,然后对每个url建立Request。建立Request的代码在67行的self._build_request方法,创建后的r(Request)又经过第68行yield rule.process_request(r)返回给scrapy的引擎,那么意味rule.process_request方法可以对创建后的r(Request,里面就有meta)进行调整。
总的来说你自定义的spider.py中的rules(规则集)中的每个规则rule的参数process_request传入的应该是一个处理函数,他会对设定follow=True时每个后续url产生的Request在yield给引擎之前进行修改,你可以在这里获取meta数据。
而且在使用self._build_request方法创建Request时也可以调整meta,代码53行r.meta.update(rule=rule, link_text=link.text)就刷新了meta数据,你可以在你自定义的spider.py中重写_build_request函数,但不建议对下划线开头的函数重写。
以上是个人理解,不知道是否有误,具体还请老师答案。