发布者: 笨鸟自学网
XMLFeedSpider是为解析XML提要而设计的,它通过使用特定的节点名对这些提要进行迭代。迭代器可以从以下选项中选择: iternodes , xml 和 html . 建议使用 iternodes 由于性能原因,迭代器 xml 和 html 迭代器一次生成整个DOM以便解析它。然而,使用 html 因为迭代器在分析带有错误标记的XML时可能很有用。
iternodes
xml
html
要设置迭代器和标记名,必须定义以下类属性:
定义要使用的迭代器的字符串。它可以是:
'iternodes' -基于正则表达式的快速迭代器'html' -使用以下功能的迭代器 Selector 。请记住,这使用DOM解析,并且必须将所有DOM加载到内存中,这对于大型提要来说可能是个问题'xml' -使用以下功能的迭代器 Selector 。请记住,这使用DOM解析,并且必须将所有DOM加载到内存中,这对于大型提要来说可能是个问题
'iternodes' -基于正则表达式的快速迭代器
'iternodes'
'html' -使用以下功能的迭代器 Selector 。请记住,这使用DOM解析,并且必须将所有DOM加载到内存中,这对于大型提要来说可能是个问题
'html'
Selector
'xml' -使用以下功能的迭代器 Selector 。请记住,这使用DOM解析,并且必须将所有DOM加载到内存中,这对于大型提要来说可能是个问题
'xml'
默认为: 'iternodes' .
具有要迭代的节点(或元素)名称的字符串。例子::
itertag = 'product'
一份名单 (prefix, uri) 元组,用于定义该文档中可用的名称空间,该文档将使用该爬行器进行处理。这个 prefix 和 uri 属性自动注册命名空间。 register_namespace() 方法。
(prefix, uri)
prefix
uri
register_namespace()
然后,可以在 itertag 属性。
itertag
例子::
class YourSpider(XMLFeedSpider): namespaces = [('n', 'http://www.sitemaps.org/schemas/sitemap/0.9')] itertag = 'n:url' # ...
除了这些新属性外,该爬行器还具有以下可重写的方法:
一种方法,当响应从蜘蛛中间件到达时,在蜘蛛开始解析它之前,立即接收响应。它可以用于在解析响应体之前对其进行修改。此方法接收响应并返回响应(可以是相同的或另一个响应)。
将为与提供的标记名匹配的节点调用此方法 (itertag )。接收响应,并引发 Selector 对于每个节点。重写此方法是必需的。否则,你的蜘蛛就不会起作用了。此方法必须返回一个 item object ,a Request 对象,或包含其中任何一个的迭代数。
Request
这个方法是为spider返回的每个结果(项或请求)调用的,它用于在将结果返回到框架核心之前执行所需的任何最后一次处理,例如设置项id。它接收结果列表和产生这些结果的响应。它必须返回结果列表(项或请求)。
警告
由于其内部实现,在编写时必须显式设置新请求的回调 XMLFeedSpider -基于蜘蛛;否则会发生意外行为。
XMLFeedSpider
Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )
GMT+8, 2024-11-23 16:16 , Processed in 0.016528 second(s), 17 queries .
© 2001-2020