Scrapy 在csv文件中不保存任何内容。什么';怎么了?
我尝试运行此代码并将其保存为csv文件,但在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 = [
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的?您需要澄清两组代码之间的结果差异。两组都返回三个结果。预计要退回的物品数量是多少?这些物品应该是什么样子?嗨,谢谢你的建议。你有解决这个问题的示例代码吗?