首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么scrapy在尝试爬取和解析站点时会抛出错误?

为什么scrapy在尝试爬取和解析站点时会抛出错误?
EN

Stack Overflow用户
提问于 2011-03-11 03:31:37
回答 2查看 9.2K关注 0票数 6

下面的代码

代码语言:javascript
复制
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

抛出以下错误

代码语言:javascript
复制
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。也许我设置的链接提取器是错误的?

我想要做的是解析分类页面上的每个项目链接。我这样做是完全错误的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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

票数 9
EN

Stack Overflow用户

发布于 2015-01-31 14:01:48

默认情况下,scrapy会在类中搜索解析函数。在您的爬行器中,缺少解析函数。您提供的不是解析,而是parse_item。如果将parse_item替换为parse,这个问题将得到解决。或者,您可以用parse_item的解析方法覆盖spider.py中的解析方法。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5264829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档