2009-11-27 7 views
5

이것은 Scrapy 튜토리얼에서 BaseSpider의 예는 다음과 같습니다Scrapy BaseSpider : 어떻게 작동합니까?

from scrapy.spider import BaseSpider 
from scrapy.selector import HtmlXPathSelector 

from dmoz.items import DmozItem 

class DmozSpider(BaseSpider): 
    domain_name = "dmoz.org" 
    start_urls = [ 
     "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/", 
     "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/" 
    ] 

    def parse(self, response): 
     hxs = HtmlXPathSelector(response) 
     sites = hxs.select('//ul[2]/li') 
     items = [] 
     for site in sites: 
      item = DmozItem() 
      item['title'] = site.select('a/text()').extract() 
      item['link'] = site.select('a/@href').extract() 
      item['desc'] = site.select('text()').extract() 
      items.append(item) 
     return items 

SPIDER = DmozSpider() 

내 프로젝트에 대한 변경 사항을 복사 :

from scrapy.contrib.spiders import CrawlSpider, Rule 
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor 
from scrapy.selector import HtmlXPathSelector 
from scrapy.item import Item 
from firm.items import FirmItem 

class Spider1(CrawlSpider): 
    domain_name = 'wc2' 
    start_urls = ['http://www.whitecase.com/Attorneys/List.aspx?LastName=A'] 

    def parse(self, response): 
     hxs = HtmlXPathSelector(response) 
     sites = hxs.select('//td[@class="altRow"][1]/a/@href').re('/.a\w+') 
     items = [] 
     for site in sites: 
      item = FirmItem 
      item['school'] = hxs.select('//td[@class="mainColumnTDa"]').re('(JD)(.*?)(\d+)') 
      items.append(item) 
     return items 

SPIDER = Spider1()  

내가

[wc2] ERROR: Spider exception caught while processing 
<http://www.whitecase.com/Attorneys/List.aspx?LastName=A> (referer: <None>): 
[Failure instance: Traceback: <type 'exceptions.TypeError'>: 
'ItemMeta' object does not support item assignment 

내가 크게 것 오류를 얻을 여기에있는 전문가가 코드를 살펴보고 내가 잘못 가고있는 부분에 대한 단서를 주면 감사하겠습니다.

답변

16

은 아마 당신이 item = FirmItem() 대신 item = FirmItem 의미 감사?

+0

예, 제가 고쳤습니다. – Zeynel

+2

ItemLoader (매개 변수 항목이 Item 클래스이지만 Item 클래스는 아님)를 사용하면 동일한 오류가 발생합니다. – eviltnan

+0

디버깅 시간부터 저를 구 해주십시오. – javed

관련 문제