我有一个循环(如下所示),它执行两次(索引1->;3),但是Scrapy在两个结果中只返回第一个trackname。但是print item
行显示了str_selector
的不同值,所以我知道循环正常,但是scray没有看到x
的变化值。在
你知道我犯了什么错误吗?在
items = []
item = scrapyItem()
for x in range (1,3):
str_selector = '//tr[@name="tracks-grid-browse_track_{0}"]/td[contains(@class,"secondColumn")]/a/text()'.format(x)
item['trackname'] = hxs.select(str_selector).extract()
print item
items.append(item)
return items
你现在正在做的是创建一个item对象并在循环中更改它的值,你需要在循环中创建item。在
只是您应该为每个迭代构建一个新的项,而不是保持相同:您在
items
中添加相同的对象,mutable(对于python中的所有用户定义类,默认情况下),因此当您更新item['trackname']
时,包含的所有项都会更新!在下面是一些代码来说明:
现在,每次创建一个新对象:
^{pr2}$对象现在不同了!在
相关问题 更多 >
编程相关推荐