- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我的 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/
我正在使用以下 gem 作为编辑器。 gem "wysihat-engine", "~> 0.1.13" 当我运行“rails generate wysihat”时,它会生成所有图像文件,但无法生成迁
我的Scrapy代码无效。我正在尝试抓取论坛,但收到错误。 这是我的代码: import scrapy, time class ForumSpiderSpider(scrapy.Spider):
为什么 gevent 会抛出这个错误?在 ipython、ubuntu 13 中运行它 In [1]: from gevent import monkey In [2]: monkey.patch_a
如何将 instance 属性标记为未在基类中实现? (与讨论将 class 属性标记为未实现的 this 问题不同,但也许我没有正确理解基类...) 例如我想要类似的东西 class Base():
系统信息 python 3.8.7 操作系统 11.1(大苏尔) 通过 brew install python@3.8 安装的 Python 要在 Big Sur 和最有可能的旧版本上重现: impo
我正在阅读一篇关于布隆过滤器的文章,https://en.wikipedia.org/wiki/Bloom_filter ,其中一个表达式是为散列函数的最佳数量导出的。我想重现 m 的简化情况的计算=
我正在尝试使用 ActiveJob将诸如电子邮件调度之类的作业排队,但我得到一个 NotImplementedError (Use a queueing backend to enqueue jobs
我需要实现一个具有数百种方法的接口(interface)(ResultSet)。 现在,我将只实现这些方法的一个子集,抛出 NotImplementedError为其他人。 在 Java 中,我找到了
这是我的代码: package example object Lists { def max(xs: List[Int]): Int = { if(xs.isEmpty){
我正在使用 django 和 Google App Engine。我无法确定错误来自哪里,因为如果我在本地使用它,我的网站就会正常运行。在我将其部署到 GAE 上之后,它工作正常,但是当使用 goog
import torch import torch.nn as nn device = torch.device('cuda' if torch.cuda.is_available() else 'c
我的 scrapy 代码不工作,我不知道!我想抓取宜家网站,我首先设计了一个 CrawlSpider,它不够具体,无法检索网页的每个链接。所以我设计了一个带有 yield 请求方法的基本 Spider
是为了提醒你自己和你的团队正确实现类(class)吗?我没有完全使用这样的抽象类: class RectangularRoom(object): def __init__(self, widt
尝试在本地预编译 Assets 时出现以下问题 RAILS_ENV=production bundle exec rake assets:precompile rake aborted! Sprock
在我的 Rails 应用程序 (4.2.4) 中,我一直在尝试让异步邮件发送工作。 我安装了 delay_job 作为我的队列适配器,并在几个地方将它设置为适配器:config/application
这个问题在这里已经有了答案: Jupyter Notebook with Python 3.8 - NotImplementedError (4 个答案) 关闭 3 年前。 尝试在本地主机上构建 j
我在 azure 上上传时遇到问题 https://learn.microsoft.com/pl-pl/azure/machine-learning/how-to-access-data-intera
我想使用 pandas 中的 fillna 命令来估算数据帧。这是我的代码片段: import glob import pandas as pd files=glob.glob("IN.201*.cs
服务器JSON使用retrofit2和rxjava2进行数据解析。转到CompanyAdapter类时,数据获取并成功存储在List中,然后给出上述错误。 MainActivity.kt priva
我想使用 pandas 中的 fillna 命令来估算数据帧。这是我的代码片段: import glob import pandas as pd files=glob.glob("IN.201*.cs
我是一名优秀的程序员,十分优秀!