当前位置:  开发笔记 > 编程语言 > 正文

Scrapy请求返回notImplementedError

如何解决《Scrapy请求返回notImplementedError》经验,为你挑选了1个好方法。

我的scrapy代码不起作用,我不知道!我想抓住Ikea网站,我首先设计了一个CrawlSpider,它不够具体,无法检索网页的每个链接.所以我设计了一个带有yield请求方法的基本Spider.

这是我的代码:

class IkeaSpider(scrapy.Spider) :        
    name = "Ikea"
    allower_domains = ["http://www.ikea.com/"]
    start_urls = ["http://www.ikea.com/fr/fr/catalog/productsaz/8/"]



    def parse_url(self, response):

        for sel in response.xpath('//div[@id="productsAzLeft"]'):

            base_url = 'http://www.ikea.com/'
            follow_url = sel.xpath('//span[@class="productsAzLink"]/@href').extract()
            complete_url = urlparse.urljoin(base_url, follow_url)
            request = Request(complete_url, callback = self.parse_page)

            yield request


    def parse_page(self, response):

这是错误日志:

2016-01-04 22:06:31 [scrapy] ERROR: Spider error processing  (referer: None)
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 588, in _runCallbacks
    current.result = callback(current.result, *args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/scrapy/spiders/__init__.py", line 76, in parse
    raise NotImplementedError
NotImplementedError

masnun.. 8

你的蜘蛛需要一个parse方法,它是所有初始请求的默认回调.您可以将parse_url方法重命名为parse,它将正常工作.

class IkeaSpider(scrapy.Spider) :

    name = "Ikea"
    allower_domains = ["http://www.ikea.com/"]
    start_urls = ["http://www.ikea.com/fr/fr/catalog/productsaz/8/"]


    def parse(self, response):

        for sel in response.xpath('//div[@id="productsAzLeft"]'):

            base_url = 'http://www.ikea.com/'
            follow_url = sel.xpath('//span[@class="productsAzLink"]/@href').extract()
            complete_url = urlparse.urljoin(base_url, follow_url)
            request = Request(complete_url, callback = self.parse_page)

            yield request

备择方案

您也可以使用定义的参数手动定义start_requests方法和产量scrapy.Requests,callback就像您在此处所做的那样.



1> masnun..:

你的蜘蛛需要一个parse方法,它是所有初始请求的默认回调.您可以将parse_url方法重命名为parse,它将正常工作.

class IkeaSpider(scrapy.Spider) :

    name = "Ikea"
    allower_domains = ["http://www.ikea.com/"]
    start_urls = ["http://www.ikea.com/fr/fr/catalog/productsaz/8/"]


    def parse(self, response):

        for sel in response.xpath('//div[@id="productsAzLeft"]'):

            base_url = 'http://www.ikea.com/'
            follow_url = sel.xpath('//span[@class="productsAzLink"]/@href').extract()
            complete_url = urlparse.urljoin(base_url, follow_url)
            request = Request(complete_url, callback = self.parse_page)

            yield request

备择方案

您也可以使用定义的参数手动定义start_requests方法和产量scrapy.Requests,callback就像您在此处所做的那样.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有