Я очень новичок в SCRAPY
Я пытаюсь извлечь 100 цитат с этого сайта (http://quotes.toscrape.com/random),, чтобы сделать это, я пишу следующий паук
# -*- coding: utf-8 -*-
import scrapy
class QuotesProjectSpider(scrapy.Spider):
name = 'quotes_project'
allowed_domains = ['toscrape.com']
start_urls = ['http://quotes.toscrape.com/random']
def parse(self, response):
self.log('i gonna scrape : '+response.url)
#self.log('the whole page : '+response.text)
i=1
tempQuotes = {}
quotesArray = [ {
'author' : response.css('div.quote small.author::text')[0].extract(),
'quote' : response.css('div.quote span.text::text')[0].extract(),
'tags' : response.css('div.quote div.tags a.tag::text').extract()
}]
flag = False
while i < 100:
tempQuotes = {
'author' : response.css('div.quote small.author::text')[0].extract(),
'quote' : response.css('div.quote span.text::text')[0].extract(),
'tags' : response.css('div.quote div.tags a.tag::text').extract()
}
flag = False
j = 0
n = len(quotesArray)
while not flag and j < n :
if tempQuotes['quote'] == quotesArray[j]['quote'] :
flag = True
j+=1
if not flag :
quotesArray.append(tempQuotes)
i+=1
print("i = " + str(i))
print("quote : "+tempQuotes['quote'])
print("condition : " + str(tempQuotes['quote'] == quotesArray[0]['quote']))
yield quotesArray
проблема здесь в этой строке
print ("условие:" + str (tempQuotes ['quote'] == quotesArray [0] ['quote']))
это показывает мне True с бесконечным циклом, это означает, что ответ не обновляется, потому что веб-сайт отображает новую цитату каждый раз, когда вы обновляете страницу, как обновить ответ функции разбора в каждом цикле.
кто-нибудь может мне помочь, пожалуйста?