python - 如何通过之前的标签内容选择标签?
问题描述
我有一个看起来像这样的 html 页面:
<div>
<h1>First Item</h1>
<p> the text I want </p>
</div>
<div>
<h1>Second Item</h1>
<p> the text I don't want </p>
</div>
“第一项”的标题可能位于每个页面抓取的不同标签级别,因此索引不固定。
我想要一些看起来像的选择(那是一个伪代码)。
from lxml import html
locate_position = locate(html.xpath(//div/h1[contains("First Item")])))
scrape = html.xpath(//div[locate_position]/p)
解决方案
如果你只想匹配前面的兄弟:
/p/preceding-sibling::contains(h1,"First Item")
更接近您的示例的选项是:
/div[contains(h1, "First Item")]/p
哪个得到 p 是 div 的孩子有一个 h1 孩子。
推荐阅读
- python - 一次构建一个字符串,检查它是否包含相邻的重复子字符串
- python - 根据特定条件删除数据帧的特定行
- c++ - 给定代码的 O(n) 和时间复杂度函数
- javascript - 替换部分对象键值
- web3py - 当我为合约调用 balanceOf 函数并在 call() 中指定块号时,我收到一个禁止的 URL 错误
- javascript - 从链接中获取特定类的文本
- android - DiffUtil , 添加 ListListener 以在当前 List 更改时接收更新
- python - 在多索引 DataFrame 中跨时间序列范围切片
- wordpress - Wordpress 内联 SVG 不会显示,但会在可视化编辑器中显示
- c# - vb.net动态设置gridview列的属性