前同居/父母/祖先的问题

时间:2020-09-14 02:40:27

标签: xpath scrapy

<div class='productHolder'>   
    <a href="https://ap.com" class="tea-time-with-ap">
        <div class="aptime-8" dataInfo="name">Hammer</div>
        <div class="aptime-9" dataInfo="price">$980</div>
        </div>
        </div>
    </a>
</div>

注意:同一页上有20多个productHolder类。

我能够获取价格数据,如何使用父级或前级兄弟姐妹获取href。

我使用以下代码获取价格:

rawPrice = response.xpath("//*[contains(text(),'$')]/text()")[counter].extract()

我花了2个小时尝试使用前面的同级,父级,甚至更改代码以使用其他值,但是,我在其他地方运行问题。

感谢您的帮助,欢呼!

1 个答案:

答案 0 :(得分:1)

您是否正在寻找类似的东西

from io import StringIO
from lxml import etree

html = """
<div class='productHolder'>   
    <a href="https://ap.com" class="tea-time-with-ap">
        <div class="aptime-8" dataInfo="name">Hammer</div>
        <div class="aptime-9" dataInfo="price">$980</div>
        </div>
        </div>
    </a>
</div>
"""

root = etree.parse(StringIO(html), etree.HTMLParser())
print(root.xpath('//*[contains(text(),"$")]/../@href')[0])

结果:

https://ap.com

当然,您可以轻松地从中构建:

item = root.xpath('//*[contains(text(),"$")]')
print(item[0].text)
print(item[0].xpath('../@href')[0])

结果:

$980
https://ap.com