使用CrawlSpider可以自动提取网页中的链接,生成请求

1 生成CrawlSpider蜘蛛文件

crapy genspider -t crawl 蜘蛛文件名称 url

2 导入的模块

from scrapy.linkextractors import LinkExtractor  # 专门提取页面链接
from scrapy.spiders import CrawlSpider, Rule  # 处理链接请求

3 定义提取链接规则

#  提取链接规则
rules = (
    # follow : 是否跟进页面 根据规则 进行再次提取链接
    Rule(LinkExtractor(allow=(r'position_detail',)), callback='parse_item', follow=False,process_links='pro_link'),
    Rule(LinkExtractor(allow=(r'start=\d+',)), follow=True),
)

LinkExtractor() #提取页面的链接,返回列表形式

    没有参数默认提取全部链接

    参数allow为提取规则


Rule() #处理链接请求

    参数1:LinkExtractor实例

    参数callback:指定处理返回的响应的函数

    参数follow:是否对返回的响应里的链接再次跟进提取,默认为True

    参数process_links:指定函数对提取的链接做再次处理,指定的函数的参数格式为(self,links),函数需要有返回链接links,


rules中可以写多个Rule()


注意:蜘蛛文件不要重写parse函数,以及使用parse作为回调函数,因为CrawlSpider使用了parse方法实现其逻辑