scrapy不用start_url方式做爬虫入口

/ 0评 / 0

用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的连接需要爬.

处于道德起见,应该把爬虫的速率下降一些,不然爬死了别人网站可不好.