Skip to main content
 首页 » 编程设计

python之如何在 python 中使用 scrapy 获取直接父节点

2025年05月04日14Leo_wl

我是 scrapy 的新手。我想从网络上抓取一些数据。我得到了如下的 html 文档。

dom style1: 
<div class="user-info"> 
    <p class="user-name"> 
        something in p tag 
    </p> 
    text data I want 
</div> 
 
dom style2: 
<div class="user-info"> 
    <div> 
        <p class="user-img"> 
            something in p tag 
        </p> 
        something in div tag 
    </div> 
    <div> 
        <p class="user-name"> 
            something in p tag 
        </p> 
        text data I want 
    </div> 
</div> 

我想获取数据我想要的文本数据,现在我可以使用css或xpath 选择器通过检查它是否存在来获取它。但我想知道一些更好的方法。 比如我可以先获取css p.user-name,然后获取it's parent,再获取是div/text(),我想要的数据始终是 p.user-name 的直接父级 div 的 text(),但是问题是,如何获取直接父级 p.user-name?

请您参考如下方法:

使用 xpath,您可以在 css 不支持的每个方向(父级、兄弟级、子级等)遍历 xml 树。
对于您的情况,您可以使用 xpath .. 获取节点的父级父符号:

//p[@class='user-name']/../text() 

解释:
//p[@class='user-name'] - 找到 <p>类值为 user-name 的节点.
/.. - 选择节点的父节点。
/text() - 选择当前节点的文本。

此 xpath 应该适用于您描述的两种情况。