用start_url毕竟数量太少,如果我引入一个大列表显然不合适,所以我考虑用start_requests来做,覆盖这个方法.
比如我知道小说站的获取列表,我可以一开始就引入到start_requests,然后抓取前100个目录.
# 书目录 def start_requests(self): for num in range(1,100): yield scrapy.Request('https://www.xxx.com/allvisit_' + str(num) + '.htm', callback=self.parse) # 获取每一本书的URL def parse(self, response): book_urls = response.xpath('//*[@id="content"]/div/div[2]/div/ul/li/span[3]/a/@href').extract() for book_url in book_urls: yield Request(book_url,callback=self.parse_read)
这时候,显然短时间内采集了大量的书名连接,很快就得出有40K的连接需要爬.
处于道德起见,应该把爬虫的速率下降一些,不然爬死了别人网站可不好.