刚刚的程序代码中到底发生了什么事?

Scrapy调用了scrapy.Resquest类中Spider(爬虫)的start_requests方法。根据每条链接返回的响应,每条链接实例化为Response的类同时调用了定义的parse()方法把响应作为参数传递。

使用start_requests方法的捷径

你只需要用一列的URLs(链接)定义start_urls类实例的属性,由URLs(链接)中生成scrapy.Response项目(实例)而不是去执行start_requests()方法。这一列表URLs(链接)将会被默认执行start_requests()方法来为你的爬虫创建初始化请求。

    import scrapy
    
    class QuotesSpider(scrapy.Spider):
        name = "quotes"
        start_urls = [
                 'http://quotes.toscrape.com/page/1/',
                 'http://quotes.toscrape.com/page/2/',
             ]
        
        def parse(self, response):
            page = response.url.split("/")[-2]
            filename = 'quotes-%s.html' % page
            with open(filename, 'wb') as f:
                f.write(response.body)

parse()方法将会被调用来处理每一条URLs(链接),即使我们没有特别要求scrapy去做,这一执行是因为parse()是Scarpy的默认调用方法,parse()方法时处理请求的链接没有特别的返回参数。

你可能感兴趣的:(刚刚的程序代码中到底发生了什么事?)