gpt4 book ai didi

python - Scrapy 请求返回 notImplementedError

转载 作者:太空狗 更新时间:2023-10-30 01:57:57 26 4
gpt4 key购买 nike

我的 scrapy 代码不工作,我不知道!我想抓取宜家网站,我首先设计了一个 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 <GET http://www.ikea.com/fr/fr/catalog/productsaz/8/> (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

最佳答案

您的蜘蛛需要一个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 方法并使用定义的 callback 参数手动生成 scrapy.Requests 就像您在此处所做的那样。

关于python - Scrapy 请求返回 notImplementedError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34600064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com