2014-04-22 2 views
0

Scrapy 0.22.2 for Python 2.7.3을 사용하여 CrawlSpider를 구축 중이며 요청에 문제가 있습니다. 여기서 지정한 콜백 메소드는 호출되지 않습니다. 나는 '시험을 보지 못할 나는 이것을 실행하고 URL을 확인하지만, sortSuperseded가 호출되지 않습니다 때Scrapy Request 콜백 메소드가 호출되지 않았습니다.

elif current_status == "Superseded": 
     #Need to do more work here. Have to check whether there is a replacement unit available. If there isn't, download whatever outline is there 
     # We need to look for a <td> element which contains "Is superseded by " and follow that link 
     updated_unit = hxs.xpath('/html/body/div[@id="page"]/div[@id="layoutWrapper"]/div[@id="twoColLayoutWrapper"]/div[@id="twoColLayoutLeft"]/div[@class="layoutContentWrapper"]/div[@class="outer"]/div[@class="fieldset"]/div[@class="display-row"]/div[@class="display-row"]/div[@class="display-field-info"]/div[@class="t-widget t-grid"]/table/tbody/tr[1]/td[contains(., "Is superseded by ")]/a') 
     # need child element a 
     updated_unit_link = updated_unit.xpath('@href').extract()[0] 
     updated_url = "http://training.gov.au" + updated_unit_link 
     print "\033[0;31mSuperceded by "+updated_url+"\033[0m" # prints in Red for superseded, need to follow this link to current 
     yield Request(url=updated_url, callback='sortSuperseded', dont_filter=True) 

def sortSuperseded(self, response): 
    print "\033[0;35mtest callback called\033[0m" 

에 오류가 없습니다 : 여기 ELIF 블록 내 요청을 시작 내 구문 분석 방법에서 조각이다 콜백 (callback) '이 콘솔에 인쇄되었습니다.

내가 추출하는 URL은 내 CrawlSpider에 지정한 도메인 내에 있습니다.

allowed_domains = ["training.gov.au"] 

나는 어디로 가고 있습니까?

+0

에 당신이 당신의 콘솔 로그를 공유 할 수 있습니다 줄을 변경? 또한 메소드 이름 대신'callback = self.sortSuperseded'를 사용하십시오. –

+0

'yield request (url = updated_url, callback = 'sortSuperseded')'라인에 도달 했습니까? 확실히 '1/0' 또는 중단 점 ('import pdb; pdb.set_trace()')을 넣으십시오. – warvariuc

+0

안녕하세요. 그리고 warwaruk, 답장을 가져 주셔서 감사합니다. 'yield request (updated_url, callback = self.sortSuperseded)'호출을 변경하여 작동하도록했습니다. 따옴표를 제거하는 것은 트릭을 만들었지 만 규칙을 지정할 때 콜백을 따옴표로 묶어야한다는 혼란이있었습니다. 건배! – CrackpotTenure

답변

0

콜백 메소드 이름은 따옴표가 필요하지 않습니다.

yield Request(url=updated_url, callback='sortSuperseded', dont_filter=True) 

yield Request(updated_url, callback=self.sortSuperseded, dont_filter=True) 
+0

OP, CrackpotTenure의 의견을 기반으로이 답변을 추가하고 제목에서 "SOLVED"라는 단어를 삭제했습니다. – Tony

관련 문제