gpt4 book ai didi

python - Scrapy 只产生最后一个元素

转载 作者:行者123 更新时间:2023-12-01 03:47:48 24 4
gpt4 key购买 nike

我正在 scrapy 的帮助下抓取一些类(class)/类(class),但它似乎只产生列表的最后元素。
这是有问题的代码:

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} \
)

所以基本上我正在抓取类(class)并产生对详细信息页面的请求。但是,parse_lesson 函数中的类(class)始终相同。
我在这里完全错过了一些东西吗?

最佳答案

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

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

解决方法如下:

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']

告诉我进展如何。

关于python - Scrapy 只产生最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38719489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com