Что такое лучший безопасный способ извлечения информации о деталях со страниц? Я имею в виду, иногда на странице может отсутствовать элемент, и вы закончите разбивку искателя.Scrapy безопасный способ извлечения предметов
Посмотрите этот пример:
for cotacao in tabela_cotacoes:
citem = CotacaoItem()
citem['name'] = cotacao.select("td[4]/text()").extract()[0]
citem['symbol'] = cotacao.select("td/a/b/text()").extract()[0]
citem['current'] = cotacao.select("td[6]/text()").extract()[0]
citem['last_neg'] = cotacao.select("td[7]/text()").extract()[0]
citem['oscillation'] = cotacao.select("td[8]/text()").extract()[0]
citem['openning'] = cotacao.select("td[9]/text()").extract()[0]
citem['close'] = cotacao.select("td[10]/text()").extract()[0]
citem['maximum'] = cotacao.select("td[11]/text()").extract()[0]
citem['minimun'] = cotacao.select("td[12]/text()").extract()[0]
citem['volume'] = cotacao.select("td[13]/text()").extract()[0]
Если какой-либо элемент отсутствует на странице, .extract() возвращает [] и вызов [0] на них сгенерирует исключение (из диапазона).
Итак, вопрос в том, что это лучший способ/подход, чтобы справиться с этим.
Отдельная проблема, но я бы сделал параллельный список вместо того, чтобы печатать (или копировать) все функции из 10 раз. 'Поля = ['name', 'current', 'last_neg' ...]; Nums = [4,6,7 ...] 'them loop through 'для MyField, MyNum в zip (Поля, Числа): citem [MyField] = cotacao ... [MyNum] ...' Тогда вы можете это сделать просто с одним циклом ... – beroe