scrapy csv输出所有结果都是单行

时间:2013-12-23 09:10:35

标签: csv data-structures scrapy extract

这是我的蜘蛛

from scrapy.spider import BaseSpider
from scrapy.selector import Selector
from sample1.items import ppppkartItem

class ppppkartSpider(BaseSpider):
   name = "ppppkart"
   allowed_domains = ["ppppkart.com"]
   start_urls = ["http://www.ppppkart.com/mobilesotracker=nmenu_sub_electronics_0_Mobiles"]

   def parse(self, xmlresponse):
       sel = Selector(xmlresponse)
       sites = sel.xpath('//html/body/div/div[2]/div/div[2]/div[2]/div/div[2]')
       items = []
       for site in sites:
           item = ppppkartItem()
           item['image'] = site.xpath('.//a/img/@src').extract()
           item['price'] = site.xpath('.//span/text()').extract()
           item['title'] = site.xpath('.//a/text()').extract()
           item['link'] = site.xpath('.//a/@href').extract() 
           items.append(item)
       return items     

这是我的项目

`

from scrapy.item import Item, Field

class ppppkartItem(Item):
    price = Field()
    title = Field()
    link = Field()
    image = Field()

这是我的结果

[{"image": ["http://img8a.ppppcart.com/image/mobile/q/f/r/apple-iphone-5c-imadpnhyw2qnxkh5.jpeg", "http://img7a.ppppcart.com/image/mobile/j/z/n/htc-one-max-imadqrqeyceghdba.jpeg", 

整个结果是单行,我需要列式结果我能做什么..提前谢谢

我希望结果像

image:img result; price:price result; title:title result; link:link result;
image:2nd img result; price:2nd price result; title:2nd title result; link:2nd link result;

1 个答案:

答案 0 :(得分:0)

执行此任务的方法很少:

  1. 您可以使用Scrapy构建if功能将项目输出到csv:

    scrapy crawl [你的蜘蛛名] -o items.csv -t csv

    有关详细信息,请参阅此处:http://doc.scrapy.org/en/latest/topics/feed-exports.html#topics-feed-exports

  2. 您可以创建自己的管道并使用项目导出器。然后你就可以更好地控制项目的内容,即你可以删除一些项目等。有关这两个主题的更多信息,请阅读:http://doc.scrapy.org/en/latest/topics/item-pipeline.htmlhttp://doc.scrapy.org/en/latest/topics/exporters.html