-1

저는 첫 번째 파이썬 프로젝트에서 작업 중이며 Scrapy.org 프레임 워크를 사용하고 있습니다. IF 문을 사용하여 가격이 비어 있는지 확인하여 내 CSV 파일에 저장하지 않습니다.파이썬 조건부 (IF, ELSE) 들여 쓰기 예외

들여 쓰기 예외가 발생합니다.

IndentationError : 예상 들여 쓰기 블록

IF 문이 코드의 끝에 위치하고 있습니다.

나를 도와 주셔서 감사합니다.

코드 :

if not items ["price"]: 
     #do nothing 
    else: 
     items.append(item) 

이 ... 당신이 들여 문이 예상되는 단지 코멘트를 가질 수 없습니다 : 여기

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

들여 쓰기를하지 않는'class' 코드가 코드 샘플을 만드는 데 문제가 있다고 가정합니다. 문제를 해결하고 코드 샘플을 확인한 후 * 게시하기 전에 ** 특히 ** Python으로 포맷하십시오. (다른 사람이 실제로 어떻게되는지 알고있는 것은 불가능합니다.) – millimoose

+0

또한 코드 샘플을 줄여야합니다. 이 중 80 % ('if..else' 블록을 제외한 모든 것)는 여러분의 문제와 무관합니다. – millimoose

+0

나는 그 @millimoose을 생각하지 않았다. .. 충고에 감사드립니다. –

답변

3

if, else, for, def 코드 블록 와야합니다. 의견은 중요하지 않습니다. 왜 그냥 조건을 반전했다

if not item["price"]: 
    pass 
else: 
    items.append(item) 

:이 pass statement가 무엇입니까?

+0

감사합니다. 제안에 대한 약간의 수정을해야했지만 효과가있었습니다. 항목 [ "price"] : –

+0

@JoeBarreca 원래 질문의 코드를 사용하려고 했으므로 아마도 거기에 오타를 수정하십시오. – millimoose

3

는 문제입니다.

if not items ["price"]: 
     #do nothing 
     pass 
    else: 
     items.append(item) 
+0

도움 주셔서 감사합니다. 나는이 튜토리얼을 통해 http://en.wikibooks.org/wiki/Non-Programmer%27s_Tutorial_for_Python_2.6/Decisions을 살펴 보았다. 아무 곳이나 언급 한 패스가 보이지 않았다. .. 멍청한 존재 인 것을 유감스럽게 생각한다. -1 냄새 : ( –

+0

newbieness에 대한 가장 좋은 점은 임시 상태라는 것입니다. 고전적인 튜토리얼은 http://docs.python.org/2/tutorial/입니다. http://docs.python.org/2/tutorial/controlflow를 참조하십시오. .html # pass-statements – bgporter

2

만약 아무것도하지 않고 당신은 단지 다른 당신은 아마 그것의 부정을 사용하려면 사용하는 경우 : pass - 파이썬은 바로이 경우에의 키워드를 가지고있다. 당신은 단지 테스트하는 경우, 당신은에 pass를 추가해야합니다

if True: 
    pass # just a comment here does not work 
else: 
    dostuff()