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()方法时处理请求的链接没有特别的返回参数。
网友评论