我有一个关于 scrapy 的非常简单的问题。我想抓取一个 start_url 为 www.example.com/1 的网站。然后我想去 www.example.com/2 和 www.example.com/3 等等。我知道这应该很简单,但是,如何才能做到呢?
这是我的抓取工具,再简单不过了:
import scrapy
class QuotesSpider(scrapy.Spider):
name = "scraper"
start_urls = [
'http://www.example.com/1',
]
def parse(self, response):
for quote in response.css('#Ficha'):
yield {
'item_1': quote.css('div.ficha_med > div > h1').extract(),
}
现在,我怎样才能去 http://www.example.com/2 ?
最佳答案
将 start_requests
方法添加到您的类中,并根据需要生成这些请求:
import scrapy
class QuotesSpider(scrapy.Spider):
name = "scraper"
def start_requests(self):
n = ??? # set the limit here
for i in range(1, n):
yield scrapy.Request('http://www.example.com/{}'.format(i), self.parse)
def parse(self, response):
for quote in response.css('#Ficha'):
yield {
'item_1': quote.css('div.ficha_med > div > h1').extract(),
}
另一种选择是,您可以在 start_urls
参数中放置多个 url:
class QuotesSpider(scrapy.Spider):
name = "scraper"
start_urls = ['http://www.example.com/{}'.format(i) for i in range(1, 100)]
# choose your limit here ^^^
def parse(self, response):
for quote in response.css('#Ficha'):
yield {
'item_1': quote.css('div.ficha_med > div > h1').extract(),
}
关于python - Scrapy:抓取连续的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45001388/