【问题标题】:Parse XML child nodes with Scrapy使用 Scrapy 解析 XML 子节点
【发布时间】:2017-07-23 22:59:16
【问题描述】:

我正在使用 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()))

我可以使用当前在“listing”中的“itertag”设置来定义节点。我想遍历每个&lt;listing&gt;,然后遍历每个&lt;img&gt; 的每个&lt;listing&gt;。如何解析子节点(子节点)?

【问题讨论】:

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


    【解决方案1】:

    您需要构建一个scrapy.Itemscrapy.http.Request 对象列表以在parse_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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-28
      • 1970-01-01
      相关资源
      最近更新 更多