Python 如何对每个区块进行分组';将数据集中在一起,而不是按xpath分组?

Python 如何对每个区块进行分组';将数据集中在一起,而不是按xpath分组?,python,scrapy,Python,Scrapy,假设我从如下结构中提取数据: <div id="main"> <span class="name">$somename</span> <span class="email">$someemial</span> <span class="phone">$phone</span> </div> name1 email1 phone1 name2 email2 p

假设我从如下结构中提取数据:

<div id="main">
    <span class="name">$somename</span>
    <span class="email">$someemial</span>        
    <span class="phone">$phone</span>
</div>
name1
email1
phone1

name2
email2
phone2

name3
email3
phone3

and so on ...
我得到的结果按如下方式分组:

name1
name2
name3 and so on...

then:
email1
email2
email3 and so on...

and finally:
phone1
phone2
phone3 and so on...
但是我想要的是这样分组数据:

<div id="main">
    <span class="name">$somename</span>
    <span class="email">$someemial</span>        
    <span class="phone">$phone</span>
</div>
name1
email1
phone1

name2
email2
phone2

name3
email3
phone3

and so on ...
我怎样才能用scrapy做到这一点


提前感谢

我建议使用压缩变量。大概是这样的:

for sel in xpath('//body'):
    name = sel.xpath('//div[@id="main"]/span[@class="name"]')
    email = sel.xpath('//div[@id="main"]/span[@class="email"]')
    phone = sel.xpath('//div[@id="main"]/span[@class="phone"]')
    result = zip(name, email, phone)
    for name, email, phone in result:
        item['name'] = name
        item['email'] = email
        item['phone'] = phone
        yield item

这更像是一个python问题。对于这种数据结构,实现这一点的最佳方法是使用字典:

dictExample={}
dictExample['name']=sel.xpath('//div[@id="main"]/span[@class="name"]')
dictExample['email']=sel.xpath('//div[@id="main"]/span[@class="email"]')
dictExample['phone']=sel.xpath('//div[@id="main"]/span[@class="phone"]')
通过执行打印示例,它将返回以下结果:

{'phone': '872934987', 'name': 'Rafael Alonso', 'email': 'example@example.com'}
现在,如果您想拥有多个词典,只需将它们附加到列表中:

listExample=[]
for i in range(0,5):
    listExample.append(dictExample)