如何在Scrapy中的一个特定节点下下载所有图像?

时间:2016-03-02 15:02:18

标签: python xpath scrapy

我正在使用Scrapy,我想在一个节点下下载所有图像,例如,这是网页:

<!-- language: lang-xml -->
<div class="A">
    <div class="A1">
        <div class="A2">
            <img original="a1.png"></img>
        </div>
    </div>
    <div class="A3">
        <img original="a2.png"></img>
    </div>
</div>
<div class="B">
    <div class="B1">
        <div class="B2">
            <img original="b1.png"></img>
        </div>
    </div>
    <div class="B3">
        <img original="b2.png"></img>
    </div>
</div>

我想下载所有图片(我需要找到这些图片的原始网址)在class =&#34; A&#34;但不是class =&#34; B&#34;,并且在class =&#34; A&#34;我们有a1.png和a2.png,它们处于不同的级别(级别的数量是不确定的)。

有没有办法使用XPATH在一个特定节点下定位一个属性(比如// div [@class =&#34; A&#34;] / ** / img)?

或者Scrapy中有解决方案吗?

1 个答案:

答案 0 :(得分:2)

使用以下XPath选择所有img个节点,这些节点是div节点的后代,类A

//div[@class="A"]//img

<强> Demo

//匹配后代,而/则与直接子项匹配。