我正在开发我的第一个Python项目并使用Scrapy.org框架。我试图使用IF语句来确定价格是否为空,因此它不会存储在我的CSV文件中。
出于某种原因,我收到缩进例外。
IndentationError:预期缩进块
IF语句位于此代码段的末尾。
谢谢大家抽出时间帮助我!
代码:
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from craigslist_sample.items import CraigslistSampleItem
class MySpider(BaseSpider):
name = "craig"
allowed_domains = ["craigslist.org"]
start_urls = [
'http://longisland.craigslist.org/search/sss?sort=date&query=raptor+660&srchType=T',
'http://newyork.craigslist.org/search/sss?zoomToPosting=&query=raptor+660&srchType=T&minAsk=&maxAsk=&sort=date',
'http://hudsonvalley.craigslist.org/search/sss?zoomToPosting=&query=raptor+660&srchType=T&minAsk=&maxAsk=&sort=date',
'http://newjersey.craigslist.org/search/sss?zoomToPosting=&query=raptor+660&srchType=T&minAsk=&maxAsk=&sort=date',
'http://hartford.craigslist.org/search/sss?zoomToPosting=&query=raptor+660&srchType=T&minAsk=&maxAsk=&sort=date'
]
def parse(self, response):
hxs = HtmlXPathSelector(response)
titles = hxs.select("//p")
items = []
for titles in titles:
item = CraigslistSampleItem()
#item["date"] = titles.select('span[@class="itemdate"]/text()').extract()
item ["title"] = titles.select("a/text()").extract()
item ["link"] = titles.select("a/@href").extract()
item ["price"] = titles.select('span[@class="itempnr"]/span[@class="itempp"]/text()').extract()
if not items ["price"]:
#do nothing
else:
items.append(item)
return items
答案 0 :(得分:3)
问题在于:
if not items ["price"]:
#do nothing
else:
items.append(item)
...你不能只注意预期缩进语句的注释。 Python有一个关键字,正是这种情况 - pass
:
if not items ["price"]:
#do nothing
pass
else:
items.append(item)
答案 1 :(得分:3)
if
,else
,for
,def
等必须后面跟一个代码块。评论不计算在内。这就是pass
statement的用途:
if not item["price"]:
pass
else:
items.append(item)
那说,为什么不改变条件?
if item["price"]:
items.append(item)
答案 2 :(得分:2)
如果if什么也没做,而你只是使用了else,你可能想要使用它的否定。如果您只是在测试,则需要在其中添加pass
:
if True:
pass # just a comment here does not work
else:
dostuff()