2016-12-23 40 views
-2

演示:如何使用Scrapy中的for循環制作網址?

import scrapy 


class QuotesSpider(scrapy.Spider): 
    name = "quotes" 

    def start_requests(self): 
     urls = [ 
      'http://quotes.toscrape.com/page/1/', 
      'http://quotes.toscrape.com/page/2/', 
     ] 
     for url in urls: 
      yield scrapy.Request(url=url, callback=self.parse) 

    def parse(self, response): 
     page = response.url.split("/")[-2] 
     filename = 'quotes-%s.html' % page 
     with open(filename, 'wb') as f: 
      f.write(response.body) 
     self.log('Saved file %s' % filename) 

在本演示以上,urls手動寫在start_requests()方法,如果有50頁,網址是這樣的:

http://www.example.com/page/1 
http://www.example.com/page/2 
... 
... 
http://www.example.com/page/50 

如何使這些URL用for循環?

回答

3
urls = ('http://www.example.com/page/{}'.format(i) for i in range(1,51)) 

變量urls將用於for循環,因此它可以是一個生成器或容器。 您可以使用列表,元組或生成器。

2

如果你只是希望網址1..50列表,試試這個

urls = ['http://www.example.com/page/' + str(i) for i in range(1, 51)] 

你必須在開始時相同的字符,只是想將號碼range(1,51)轉換爲字符串,然後追加。