Scrapy 只产生最后一个元素

Scrapy yields only the last element

我正在 scrapy 的帮助下抓取一些 courses/lessons,但它似乎只产生列表的 last 元素。
这是有问题的代码:

def parse_course_list(self, response):
    """ Scrape list of lessons for each course """
    lessons = response.css('ul.lessons-list a')
    for lesson in lessons:
        title = lesson.xpath("text()").extract_first().strip()
        link = lesson.xpath("@href").extract_first().strip()

        url = response.urljoin(link)
        item = response.meta['item']
        item['Lesson'] = title
        item['URL'] = link

        yield scrapy.Request(url, \
            callback=self.parse_lesson,
            meta={'item': item} \
        )

所以基本上我是在抓取课程并产生对详细信息页面的请求。但是,parse_lesson 函数中的教训总是相同的。
我在这里完全遗漏了什么吗?

啊...经典的指针问题!

我不确定为什么会发生这种情况,除了您生成的请求在堆栈中携带具有相同地址的项目。

解决方法如下:

def parse_course_list(self, response):
    lessons = response.css('ul.lessons-list a')
    itemToCopy = response.meta['item']
    for lesson in lessons:
        item=itemToCopy.copy()
        ...

其余的就是减去 item = response.meta['item'] 显然。

告诉我进展如何。