2014-11-16 4 views
0

좋아요. 그래서 xpath 선택의 결과를 몇 개의 문자열과 비교하려고합니다. 그러나 선택에서 올바른 결과를 얻지 못하고 있다고 생각합니다.if 명령문 처리 xpath가 작동하지 않습니다.

내 코드는 다음

def parse_item(self, response): 

    for sel in response.xpath('//*[@id="tab:specificaties"]'): 
     category = sel.xpath('table/tbody/tr[2]/td[2]/a/text()').extract() 
     logging.warning(category) 
     if category == "Videokaarten": 
      logging.warning("Videokaart") 
     elif category == "Geheugen intern": 
      logging.warning("Geheugen") 
     elif category == "Moederborden": 
      logging.warning("Moederbord") 
     elif category == "Behuizingen": 
      logging.warning("Behuizing") 
     elif category == "Processors": 
      logging.warning("Processor") 
     elif category == "Voedingen": 
      logging.warning("Voeding") 
     elif category == "Processorkoeling": 
      logging.warning("Processorkoeling") 
     elif category == "Barebones": 
      logging.warning("Barebone") 

그래서 난 할 노력하고있어 범주가 위에 언급 된 문자열과 일치하는 경우 확인하면 있으므로 적절하게 처리 할 수 ​​있습니다. 로깅은 내 터미널에서

WARNING:root:[] 

을 반환하는 범주 값을 확인하기위한 것입니다.

누군가가 케이스를 밝힐 수 있기를 바랍니다. 미리 감사드립니다! 당신이 XPath는에서 추출 할 때

+0

일반적으로 xpath에서 추출 할 때 목록에 있습니다. 'if ... =='문을'if ... in ... : '로 변경해 보았습니까? – Anzel

+0

코드에 [냄새] (http://en.wikipedia.org/wiki/Code_smell)이 있습니다. 엄청난 양의'if' 블록 대신'category' 사전과 경고 메시지를 사용하십시오. – alecxe

답변

1

는 일반적으로,이 목록에서 결과를 반환, 당신은 다음과 같이 if ... in ...:에 뭔가를 당신의 if ... == 문을 변경하려고 할 수 있습니다 :이 도움이

if "Videokaarten" in category: 
    logging.warning("Videokaart") 
elif "Geheugen intern" in category: 
... 

희망을.

+0

그래서 나는 당신이 말한 것을 해봤고 카테고리를 바꾸려고 시도했다. 그래도 여전히 나는'root : []'응답을 얻는다. 나는 목록을 다시 가져와야한다는 인상 아래에 있었다. 그래서 이전에 쓰기로 해결하려고했다. 'category = sel.xpath ('table/tbody/tr [2]/td [2]/a/text () '). extract(). 0' 또한'.0' 대신'[0]'으로 시도했지만 색인 오류가 다시 나타납니다. 나는 그것이 지수가 범위를 벗어난 것이라고 말했다고 생각합니다. – user2877036

+0

@ user2877036,'sel.xpath (...). extract()'의 응답 일부를 표시 할 수 있습니까? 아무것도 반환하지 않는다고 생각합니다. – Anzel

+0

어떻게 확인해야합니까? 셸이나 로깅을 통해'sel.xpath (...). extract()'? 도와 주셔서 감사합니다 btw! – user2877036

관련 문제