Scrapy仅产生最后一个元素

一月

我正在借助抓取一些课程/课程scrapy,但是,它似乎只产生列表最后一个元素。
这是有问题的代码:

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功能上始终是相同的
我在这里完全错过了什么吗?

拉斐尔·阿尔梅达(Rafael Almeida)

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

我不知道为什么会发生这种情况,除了您产生的请求携带栈中具有相同地址的项目外。

解决方法如下:

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']明显减去负数

告诉我情况如何。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章