我是 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 应该适用于您描述的两种情况。
关于python - 如何在 python 中使用 scrapy 获取直接父节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44418433/