首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2020-10-16 21:53:19 [scrapy.core.scraper]错误:爬行器必须返回request、item或None,在<GET Spider中获取'str‘

2020-10-16 21:53:19 [scrapy.core.scraper]错误:爬行器必须返回request、item或None,在<GET Spider中获取'str'

这个错误是由于在Scrapy爬虫中,爬虫函数必须返回一个Request对象、一个Item对象或者None,但是你的爬虫函数返回了一个字符串('str')。因此,你需要将你的爬虫函数修改为返回一个Request对象、一个Item对象或者None。

请确保在你的爬虫函数中使用了yield关键字来返回Request对象或Item对象。如果你不想返回任何数据,可以使用return None。

以下是一个示例的Scrapy爬虫函数:

代码语言:txt
复制
def parse(self, response):
    # 进行网页内容的解析和数据提取
    # ...

    # 返回Request对象继续进行下一次请求
    yield scrapy.Request(url='http://example.com', callback=self.parse_another_page)

    # 或者返回Item对象保存提取到的数据
    yield item

    # 如果不需要返回任何数据,可以直接返回None
    return None

通过以上示例,你可以根据具体的爬虫逻辑进行相应的修改和调整。记得在爬虫函数中使用yield关键字返回Request对象、Item对象或者使用return None来解决该错误。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Scrapy 爬虫框架

§ Scheduler(调度):用于接收引擎发过来的请求,添加至队列引擎再次请求时将请求返回给引擎。可以理解为从URL队列取出一个请求地址,同时去除重复的请求地址。 ​...爬虫模块是用于从一个网站多个网站爬取数据的类,它需要继承scrapy.Spider类,scrapy.Spider类中提供了start_requests()方法实现初始化网络请求,然后通过parse(...§ start_requests():该方法用于生成网络请求,它必须返回一个可迭代对象。...该方法负责处理response并返回处理的数据和下一步请求,然后返回一个包含requestItem的可迭代对象。 § closed():当爬虫关闭时,该函数会被调用。...例如,QuotesSpider类的parse()方法已经获取到了text、author以及tags信息,如果需要将这些数据包装成结构化数据,那么就需要使用Scrapy所提供的Item类来满足这样的需求

3.2K30
  • 二、Item Pipeline和Spider-----基于scrapy取校花网的信息 编写item pipeline

    spider 11 # 这个方法必须实现,每个item pipeline组件都需要调用该方法, 12 # 这个方法必须返回一个 Item 对象,被丢弃的item将不会被之后的...response parse() : 解析response,并返回ItemRequests(需指定回调函数)。...__name__) 19 20 # python 对象类型通过内置成员__dict__来存储成员信息 21 self....当没有指定的URL时,spider将从该列表开始进行爬取。 因此,第一个被获取到的页面的URL将是该列表之一。 后续的URL将会从获取到的数据中提取。...定义结构化数据字段,用来保存爬取到的数据,有点像Python的dict,但是提供了一些额外的保护减少错误

    1.3K90

    三、scrapy后续 LinkExtractorsrules Logging发送POST请求内置设置参考手册

    rules rules包含一个多个Rule对象,每个Rule对爬取网站的动作定义了特定操作。如果多个rule匹配了相同的链接,则根据规则在本集合中被定义的顺序,第一个会被使用。...process_links:指定该spider哪个的函数将会被调用,从link_extractor获取到链接列表时将会调用该函数。该方法主要用来过滤。...process_request() 必须返回以下其中之一:一个 None 、一个 Response 对象、一个 Request 对象 raise IgnoreRequest: 如果其返回 None...如果其返回 Response 对象,Scrapy将不会调用 任何 其他的 process_request() process_exception() 方法,相应地下载函数; 其将返回该response...request, response, spider) 当下载完成http请求,传递响应给引擎的时候调用 process_request() 必须返回以下其中之一: 返回一个 Response 对象

    2K40

    爬虫系列(11)Scrapy 数据的提取和保存以及Pipeline的介绍。

    xpath() 它返回选择列表,它代表由指定XPath表达式参数选择的节点 css() 它返回选择列表,它代表由指定CSS表达式作为参数所选择的节点 2.Scrapy Shell 如果使用选择想快速的到到效果...Item Pipeline 介绍 当Item Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的python类,负责接收到...item并通过它执行一些行为,同时也决定此Item是否继续通过pipeline,或者被丢弃而不再进行处理 item pipeline的主要作用: 清理html数据 验证爬取的数据 去重并丢弃 讲爬取的结果保存到数据库文件...编写自己的item pipeline 6.1 必须实现的函数 process_item(self,item,spider) 每个item piple组件是一个独立的pyhton类,必须实现以process_item...(self,item,spider)方法 每个item pipeline组件都需要调用该方法,这个方法必须返回一个具有数据的dict,或者item对象,或者抛出DropItem异常,被丢弃的item将不会被之后的

    2.7K30

    新闻推荐实战(四):scrapy爬虫框架基础

    换言之,spider是为特定站点(或者某些情况下,一组站点)定义爬行和解析页面的自定义行为的地方。 爬行是自己定义的类,Scrapy使用它从一个网站(一组网站)抓取信息。...回调函数,解析响应(网页)并返回 item objects , Request 对象,这些对象的可迭代。...回调函数,解析页面内容,通常使用 选择 (但您也可以使用beautifulsoup、lxml任何您喜欢的机制)并使用解析的数据生成项。...最后,从spider返回的项目通常被持久化到数据库(某些 Item Pipeline )或者使用 Feed 导出 ....# 必须返回请求的可迭代(您可以返回请求列表编写生成器函数),spider将从该请求开始爬行。后续请求将从这些初始请求相继生成。

    82520

    Scrapy框架-Spider

    response parse() : 解析response,并返回ItemRequests(需指定回调函数)。...当没有制定特定的URL时,spider将从该列表开始进行爬取。 start_requests(self) 该方法必须返回一个可迭代对象(iterable)。...scrapy会逐一获取parse方法中生成的结果,并判断该结果是一个什么样的类型; 2. 如果是request则加入爬取队列,如果是item类型则使用pipeline处理,其他类型则返回错误信息。...Request对象经过调度,执行生成 scrapy.http.response()的响应对象,并送回给parse()方法,直到调度没有Request(递归的思路) 7....程序取得各个页面的items前,会先处理完之前所有的request队列里的请求,然后再提取items。 7. 这一切的一切,Scrapy引擎和调度将负责到底。

    62210

    Python:Spider

    response parse() : 解析response,并返回ItemRequests(需指定回调函数)。...当没有制定特定的URL时,spider将从该列表开始进行爬取。 start_requests(self) 该方法必须返回一个可迭代对象(iterable)。...scrapy会逐一获取parse方法中生成的结果,并判断该结果是一个什么样的类型; 2. 如果是request则加入爬取队列,如果是item类型则使用pipeline处理,其他类型则返回错误信息。...Request对象经过调度,执行生成 scrapy.http.response()的响应对象,并送回给parse()方法,直到调度没有Request(递归的思路) 7....程序取得各个页面的items前,会先处理完之前所有的request队列里的请求,然后再提取items。 7. 这一切的一切,Scrapy引擎和调度将负责到底。

    65620

    学Scrapy框架没有她可不行哦(爬虫)

    国庆70周年 国庆70周年 Scrapy,要抓取网站的链接配置、抓取逻辑、解析逻辑里其实都是Spider配置的。 Spider要做的事就是有两件:定义抓取网站的动作和分析爬取下来的网页。...1 Spider运行流程: 整个抓取循环过程如下所述: 以初始的URL初始化Request,并设置回调函数。请求成功时Response生成并作为参数传给该回调函数。 回调函数内分析返回的网页内容。...返回结果两种形式,一种为字典Item数据对象;另一种是解析到下一个链接。 如果返回的是字典Item对象,我们可以将结果存入文件,也可以使用Pipeline处理并保存。...如果返回Request,Response会被传递给Request定义的回调函数参数,即再次使用选择来分析生成数据Item。...settings: 利用它我们可以直接获取项目的全局设置变量。 start_requests(): 使用start_urls里面的URL来构造Request,而且RequestGET请求方法。

    73320

    python爬虫入门(七)Scrapy框架之Spider

    SpiderSpider类定义了如何爬取某个(某些)网站。包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item)。...response parse() : 解析response,并返回ItemRequests(需指定回调函数)。...当没有指定的URL时,spider将从该列表开始进行爬取。 因此,第一个被获取到的页面的URL将是该列表之一。 后续的URL将会从获取到的数据中提取。...当没有制定特定的URL时,spider将从该列表开始进行爬取。 start_requests(self) 该方法必须返回一个可迭代对象(iterable)。...parse(self, response) 当请求url返回网页没有指定回调函数时,默认的Request对象回调函数。用来处理网页返回的response,以及生成Item或者Request对象。

    1.8K70

    python爬虫----(scrapy框架提高(1),自定义Request爬取)

    url,并执行 Request请求 默认response处理方法入口,parse函数需要实现,也就是继承类重写parse方法。...,也就是从父类Spider类中继承过来的(或者说是一个必须要实现的接口),但是需要实现。...在这个函数体,根据 start_requests (默认为GET请求)返回的 Response,得到了一个 名字为‘item_urls’ 的url集合。 然后遍历并请求这些集合。...('item', None) # 当 'item' key 不存在 meta字典时,返回None 然后在在本页中使用 xpath,css,re等来选择详细的字段,至于具体的选择,以后再说吧~~...最后将最终得到的 item 返回即可。这样就能在 ITEM_PIPELINES 得到数据,并进行下一步的处理了~~~

    75020

    Scrapy框架crawlSpider的使用——爬取内容写进MySQL和拉勾网案例

    CrawlSpider是Spider的派生类,Spider类的设计原则是只爬取start_url列表的网页,而CrawlSpider类定义了一些规则(rule)来提供跟进link的方便的机制,从爬取的网页获取...(即不提取)。它的优先级高于 allow 的参数。如果没有给出(None), 将不排除任何链接。 allow_domains (str or list) – 单值或者包含字符串域的列表表示会被提取的链接的...包含一个多个Rule对象,每个Rule对爬取网站的动作定义了特定操作。...process_links:指定该spider哪个的函数将会被调用,从link_extractor获取到链接列表时将会调用该函数。该方法主要用来过滤。...process_request:指定该spider哪个的函数将会被调用, 该规则提取到每个request时都会调用该函数。

    1.2K60
    领券