Scrapy 在csv文件中不保存任何内容。什么';怎么了?

Scrapy 在csv文件中不保存任何内容。什么';怎么了?,scrapy,Scrapy,我尝试运行此代码并将其保存为csv文件,但在csv中不包含任何内容。代码中有错误吗?请帮忙。提前谢谢 from scrapy.spider import Spider from scrapy.selector import Selector from amazon.items import AmazonItem class AmazonSpider(Spider): name = "amazon" allowed_domains = ["amazon.com"] start_urls = [

我尝试运行此代码并将其保存为csv文件,但在csv中不包含任何内容。代码中有错误吗?请帮忙。提前谢谢

from scrapy.spider import Spider
from scrapy.selector import Selector
from amazon.items import AmazonItem

class AmazonSpider(Spider):
name = "amazon"
allowed_domains = ["amazon.com"]
start_urls = [

"http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=9780316324106",
"http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=9780307959478",
"http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=9780345549334"

]

def parse(self, response):
   sel = Selector(response)
   sites = sel.xpath('//div[@class="fstRow prod celwidget"]')
   items = []
   for site in sites:
       item = AmazonItem()
       item['url'] = response.url
       item['price'] = site.xpath('//ul[@class="rsltL"]/li[5]/a/span/text()')
       if item['price']:
          item['price'] = item['price'].extract()[0]
       else:
          item['price'] = "NA"
          items.append(item)
   return items
我想保存,如果项目没有找到,然后替换为“NA”字符

当我尝试下面的代码时,效果很好:

from scrapy.spider import Spider
from scrapy.selector import Selector
from amazon.items import AmazonItem

class AmazonSpider(Spider):
name = "amazon"
allowed_domains = ["amazon.com"]
start_urls = [

"http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=9780316324106",
"http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=9780307959478",
"http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=9780345549334"

]

def parse(self, response):
   sel = Selector(response)
   sites = sel.xpath('//div[@class="fstRow prod celwidget"]')
   items = []
   for site in sites:
       item = AmazonItem()
       item['url'] = response.url
       item['price'] = site.xpath('//ul[@class="rsltL"]/li[5]/a/span/text()')
          items.append(item)
   return items
这部分怎么了?还是我忘了什么

       if item['price']:
      item['price'] = item['price'].extract()[0]
   else:
      item['price'] = "NA"

我是新来的。你能帮帮我吗。非常感谢

看起来像是
items.append(item)
在您的第一个代码示例中缩进得太远了

这将使其成为价格检查的
else
块的一部分,因此除非未设置价格,否则不会将任何项目添加到
items
列表中

from scrapy.spider import Spider
from scrapy.selector import Selector
from amazon.items import AmazonItem

class AmazonSpider(Spider):
    name = "amazon"
    allowed_domains = ["amazon.com"]
    start_urls = [

    "http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=9780316324106",
    "http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=9780307959478",
    "http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=9780345549334"

    ]

    def parse(self, response):
        sel = Selector(response)
        sites = sel.xpath('//div[@class="fstRow prod celwidget"]')
        items = []
        for site in sites:
            item = AmazonItem()
            item['url'] = response.url
            item['price'] = site.xpath('//ul[@class="rsltL"]/li[5]/a/span/text()')
            if item['price']:
                item['price'] = item['price'].extract()[0]
            else:
                item['price'] = "NA"
            items.append(item)
        return items

您不需要
项目
列表,只需使用
收益
语句即可

def parse(self, response):
    sel = Selector(response)

    for site in sel.xpath('//div[@class="fstRow prod celwidget"]'):
        item = AmazonItem()
        item['url'] = response.url
        price = site.xpath('//ul[@class="rsltL"]/li[5]/a/span/text()')
        if price:
            item['price'] = price.extract()[0]
        else:
            item['price'] = "NA"

        yield item
保存到data.csv文件:

scrapy crawl amazon -o data.csv -t csv

这就是您在原始脚本中设置缩进的方式吗?您是如何运行spider的?您需要澄清两组代码之间的结果差异。两组都返回三个结果。预计要退回的物品数量是多少?这些物品应该是什么样子?嗨,谢谢你的建议。你有解决这个问题的示例代码吗?