使用Scrapy解析XML子节点

时间:2017-07-23 22:59:17

标签: python xml xml-parsing scrapy scrapy-spider

我正在使用Scrapy来废弃XML文件。通过Scrapy,您可以选择废弃任何节点名称,例如<listing>

<listing>
 <img>1.jpg</img>
</listing>
<listing>
 <img>1.jpg</img>
 <img>2.jpg</img>
</listing>
<listing>
 <img>1.jpg</img>
 <img>2.jpg</img>
</listing>

这是我的蜘蛛:

from scrapy.spiders import XMLFeedSpider
class spider(XMLFeedSpider):
 name='spider'
 start_urls=['http://www.expample.com/xml.xml']
 itertag='listing'
 def parse_node(self,response,node):
  self.logger.info('Hi, this is a <%s> node!: %s', self.itertag, ''.join(node.extract()))

我可以使用'itertag'设置定义当前位于'listing'的节点。我希望遍历每个<listing>,然后为每个<img>运行每个<listing>。如何解析子节点(子节点)?

1 个答案:

答案 0 :(得分:1)

您需要在scrapy.Item中构建要返回的scrapy.http.Requestparse_node个对象的列表。

  sources = [Item(src=src) in for src in node.xpath('//img/text()').extract()]
  return sources

参考文献:

https://doc.scrapy.org/en/latest/topics/spiders.html#scrapy.spiders.XMLFeedSpider.parse_node