Я хочу непрерывно сканировать и обновлять значение массива, используя цикл, потому что мне нужно нажать какую-то кнопку, чтобы получить следующее значение в массиве.
Однако, похоже, yield внутри цикла работает как параллельный поток, и элемент был возвращен много раз.
Я хочу пройти через цикл, обновить данные и выдать элемент только один раз.
пример:
токовый выход:
{'field1': 'data1',
'filed2' : 'data2',
'field3' : ['data31']}
{'field1': 'data1',
'filed2' : 'data2',
'field3' : ['data32']}
{'field1': 'data1',
'filed2' : 'data2',
'field3' : ['data33']}
ожидается:
{'field1': 'data1',
'filed2' : 'data2',
'field3' : ['data31', 'data32', 'data3']}
Вот мой код
def parse_individual_listings(self, response):
...
data = {}
data[field1] = 'data1'
data[field1] = 'data2'
...
for i in range(3):
yield scrapy.Request(
urlparse.urljoin(response.url, link['href']), #different link
callback=self.parse_individual_tabs,
meta={'data': data, 'n':i};
)
def parse_individual_tabs(self, response):
data = response.meta['data']
i = response.meta['i']
...
# keep populating `data`
data[field3][i] = "data3[i]" #this value change when I click a button to update
yield data