我正在使用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>
。如何解析子节点(子节点)?
答案 0 :(得分:1)
您需要在scrapy.Item
中构建要返回的scrapy.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