演示:
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
如何使用for循环制作这些网址?
答案 0 :(得分:3)
urls = ('http://www.example.com/page/{}'.format(i) for i in range(1,51))
变量urls
将用于for循环,因此,它可以是生成器或容器。
您可以使用list,tuple或generator。
答案 1 :(得分:2)
如果你只想要一个网址列表1..50,试试这个
urls = ['http://www.example.com/page/' + str(i) for i in range(1, 51)]
您在开始时使用相同的字符,只想将range(1,51)
中的数字转换为字符串然后追加。