下面的代码
class SiteSpider(BaseSpider):
name = "some_site.com"
allowed_domains = ["some_site.com"]
start_urls = [
"some_site.com/something/another/PRODUCT-CATEGORY1_10652_-1__85667",
]
rules = (
Rule(SgmlLinkExtractor(allow=('some_site.com/something/another/PRODUCT-CATEGORY_(.*)', ))),
# Extract links matching 'item.php' and parse them with the spider's method parse_item
Rule(SgmlLinkExtractor(allow=('some_site.com/something/another/PRODUCT-DETAIL(.*)', )), callback="parse_item"),
)
def parse_item(self, response):
.... parse stuff抛出以下错误
Traceback (most recent call last):
File "/usr/lib/python2.6/dist-packages/twisted/internet/base.py", line 1174, in mainLoop
self.runUntilCurrent()
File "/usr/lib/python2.6/dist-packages/twisted/internet/base.py", line 796, in runUntilCurrent
call.func(*call.args, **call.kw)
File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 318, in callback
self._startRunCallbacks(result)
File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 424, in _startRunCallbacks
self._runCallbacks()
--- <exception caught here> ---
File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 441, in _runCallbacks
self.result = callback(self.result, *args, **kw)
File "/usr/lib/pymodules/python2.6/scrapy/spider.py", line 62, in parse
raise NotImplementedError
exceptions.NotImplementedError: 当我将回调更改为"parse“,并将函数更改为"parse”时,我没有得到任何错误,但也没有被擦除。我把它改成了"parse_items“,我想我可能会重写parse method by accident。也许我设置的链接提取器是错误的?
我想要做的是解析分类页面上的每个项目链接。我这样做是完全错误的吗?
发布于 2011-03-12 00:55:42
我需要将BaseSpider更改为CrawlSpider。感谢srapy用户!
http://groups.google.com/group/scrapy-users/browse_thread/thread/4adaba51f7bcd0af#
你好,
,
如果您从BaseSpider更改为CrawlSpider,可能会起作用?BaseSpider似乎没有实现规则,请参阅:
http://doc.scrapy.org/topics/spiders.html?highlight=rule#scrapy.contr...
-M
发布于 2015-01-31 14:01:48
默认情况下,scrapy会在类中搜索解析函数。在您的爬行器中,缺少解析函数。您提供的不是解析,而是parse_item。如果将parse_item替换为parse,这个问题将得到解决。或者,您可以用parse_item的解析方法覆盖spider.py中的解析方法。
https://stackoverflow.com/questions/5264829
复制相似问题