Как скрара обрабатывает элементы урожая в функции анализаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как скрара обрабатывает элементы урожая в функции анализа

Сообщение Anonymous »

Я был вроде новичка в генераторах и доходности, так что извините, если я получу на пути какое -то объяснение или неправильную информацию. Чтобы объяснить проблему, я хочу привести пример того, что я хочу попросить, обычно для получения значения внутри цикла внутри функции (которая затем называется генератором из -за урожайности) оно будет проходить только через весь цикл, если я Назовите это как итерационную или внутри цикла или следующей функции, вот пример: < /p>
def parse():
for i in range(10):
yield i

< /code>
Теперь, если я хочу распечатать весь диапазон (вы можете рассмотреть диапазон списка или что -то еще, не обязательно должно быть диапазоном) или цифры до 10, я мог бы сделать это многочисленными способами: < /p>
x = parse()
list(x)
< /code>
или < /p>
for i in parse():
print(i)

< /code>
И т. Д. Его итерация дает
Теперь возникает вопрос, скрара делает так же, но немного отличается, что меня смущает, вот код, который был примером в цифровом океане, который объясняет, как использовать Scrapy
class QuoteSpider(scrapy.Spider):
name = 'quote-spdier'
start_urls = ['https://quotes.toscrape.com']

def parse(self, response):
QUOTE_SELECTOR = '.quote'
TEXT_SELECTOR = '.text::text'
AUTHOR_SELECTOR = '.author::text'

for quote in response.css(QUOTE_SELECTOR):
yield {
'text': quote.css(TEXT_SELECTOR).extract_first(),
'author': quote.css(AUTHOR_SELECTOR).extract_first(),
}
< /code>
Я понимаю, что для каждого start_url он вызывает функцию Parse и только один раз с ответом страницы, теперь у меня есть несколько продуктов на одной странице, и у меня есть только один start_url, так что Моя функция Parse называется только один раз (это важная деталь ключа для наблюдения) < /p>
Теперь цикл будет выполнять все продукты на странице (представьте себе, что response.css (продукт -Item), который является классом для каждого продукта на странице) и уступит объекту один раз, вот где я запутался, если я запускаю Scrapy Spider с предыдущим кодом, я получу все продукты на этой странице, как это Эта скрара может вернуть все продукты, если функция Parse вызывается только один раз для этой страницы? Чтобы дать контекст, вызов генератора с помощью следующего (), например, вернет только первое значение урожайности генератора в цикле, так как это работает? < /p>
Примечание: я как бы пытался Чтобы понять, как работает Scrapy Parse под капотом (он называется Parse в цикле под капотом, называется ли он следующим (parse ()), как это делается?) И как это реализовано, чтобы лучше понимать доходность и генераторы.

Подробнее здесь: https://stackoverflow.com/questions/773 ... e-function
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»