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
Я не знаю, что это неправильно с этим. Я узнаю немного информации об этом. Итак, кто-нибудь мог мне помочь?
с ума, но я сделал ту же ошибку. Спасибо. – Clayton