Scrapy調(diào)用了scrapy.Resquest類中Spider(爬蟲)的start_requests方法踩蔚。根據(jù)每條鏈接返回的響應(yīng)砚嘴,每條鏈接實(shí)例化為Response的類同時(shí)調(diào)用了定義的parse()方法把響應(yīng)作為參數(shù)傳遞。
使用start_requests方法的捷徑
你只需要用一列的URLs(鏈接)定義start_urls類實(shí)例的屬性照瘾,由URLs(鏈接)中生成scrapy.Response項(xiàng)目(實(shí)例)而不是去執(zhí)行start_requests()方法匈棘。這一列表URLs(鏈接)將會被默認(rèn)執(zhí)行start_requests()方法來為你的爬蟲創(chuàng)建初始化請求。
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()方法將會被調(diào)用來處理每一條URLs(鏈接)析命,即使我們沒有特別要求scrapy去做主卫,這一執(zhí)行是因?yàn)閜arse()是Scarpy的默認(rèn)調(diào)用方法,parse()方法時(shí)處理請求的鏈接沒有特別的返回參數(shù)鹃愤。