【发布时间】:2017-05-07 21:47:58
【问题描述】:
我正在使用 scrapy 迭代地抓取一些数据,并且数据在每次迭代中都以两个列表的形式输出。我想在每次迭代时将这两个列表合并为一个列表,这样最后我将拥有一个包含许多子列表的大列表(每个子列表是每次迭代创建的两个列表的组合)
这可能会令人困惑,所以我将显示我当前的输出和代码:
使用 Scrapy 我正在以下列方式进行迭代,
for i in response.css(''tr.insider....."):
i.css(a.tab-link:text).extract() #creating the first list
i.css('td::text').extract() #creating the second list
所以当前的输出是这样的
[A,B,C] #first iteration
[1,2,3]
[D,E,F] #second iteration
[4,5,6]
[G,H,I] #third iteration
[7,8,9]
想要的输出是
[[A,B,C,1,2,3], [D,E,F,4,5,6],[G,H,I,7,8,9]]
我尝试了以下代码,但得到了None 的列表。
x =[]
for i in response.css(''tr.insider....."):
x.append(i.css(a.tablink::text).extract().extend(i.css('td::text').extract()))
但回报只是
None
None
None
None
None.....
谢谢!
【问题讨论】:
-
每次迭代的顺序重要吗?如果没有,你可以试试
i.css(a.tab-link:text, td::text).extract() -
感谢您的建议。我收到以下错误,输入错误
css() takes exactly two arguments three given -
此解决方案似乎有效,与您提供的类似:
i.css('a.tab-link:text, td::text').extract()
标签: python-2.7 list scrapy iteration