2016-02-01 1 views
0
import scrapy 
from tutorial.items import DmozItem 

class DmozSpider(scrapy.Spider): 
    name = "dmoz" 
    allowed_domains = ["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): 
     for sel in response.xpath('//ul/li'): 
      item = DmozItem() 
      item['title'] = sel.xpath('a/text()').extract() 
      item['link'] = sel.xpath('a/@href').extract() 
      item['desc'] = sel.xpath('text()').extract() 
      yield item 

Недавно я изучаю Scrapy. Когда я тестирую учебник. Я просто скопировать код из документации, но он не работает хорошо, показывая ошибку:scrapy новичок: учебник dmozItem не поддерживает поля: title

Traceback (most recent call last): 
File "C:\Python27\lib\site-packages\scrapy\utils\defer.py", line 102, in iter_errback 
yield next(it) 
File "C:\Python27\lib\site-packages\scrapy\spidermiddlewares\offsite.py", line 28, in process_spider_output 
for x in result: 
File "C:\Python27\lib\site-packages\scrapy\spidermiddlewares\referer.py", line 22, in <genexpr> 
return (_set_referer(r) for r in result or()) 
File "C:\Python27\lib\site-packages\scrapy\spidermiddlewares\urllength.py", line 37, in <genexpr> 
return (r for r in result or() if _filter(r)) 
File "C:\Python27\lib\site-packages\scrapy\spidermiddlewares\depth.py", line 54, in <genexpr> 
return (r for r in result or() if _filter(r)) 
File "C:\Users\DannyVim\Desktop\scrapy learning\tutorial\tutorial\spiders\dmoz_spider.py", line 17, in parse 
item['title'] = sel.xpath('a/text()').extract() 
File "C:\Python27\lib\site-packages\scrapy\item.py", line 63, in __setitem__ 
(self.__class__.__name__, key)) 
KeyError: 'DmozItem does not support field: title' 

И мой items.py написанное, как показано ниже:

import scrapy 

class DmozItem(scrapy.Item): 
    # define the fields for your item here like: 
    # name = scrapy.Field() 
    title = scrapy.Field 
    link = scrapy.Field 
    desc = scrapy.Field 

Я не знаю, что это неправильно с этим. Я узнаю немного информации об этом. Итак, кто-нибудь мог мне помочь?

ответ

4

Вы забыли () в scrapy.Field()

+0

с ума, но я сделал ту же ошибку. Спасибо. – Clayton

Смежные вопросы