python-使用xpath获取部分字符串匹配的html标签
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-使用xpath获取部分字符串匹配的html标签,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1553字,纯文字阅读大概需要3分钟。
内容图文
![python-使用xpath获取部分字符串匹配的html标签](/upload/InfoBanner/zyjiaocheng/655/1c0ac9406a3b4e85bab07d699b57b8e8.jpg)
html代码是盲目的,并且在html中包含字符串“ PRICE”.该部分字符串必须与html文本匹配.如果文本使用xpath匹配(部分匹配),则应返回特定的html标签路径.
注意:我需要针对多个站点自动执行此逻辑,我必须使用通用规则
(用于定位“价格”,获取父标签)
这是示例:
html="""<div id = "price_id">
<span id = "id1"></span>
<div class="price_class">
<bold>
<strong>
<label>PRICE:</label> 125 Rs.
</bold>
</strong>
</br>
</br>
</div>"""
我用了lxml
from lxml.html.clean import Cleaner
cleaner =Cleaner(page_structure=False)
cl = cleaner.clean_html(html)
cleaned_html = fromstring(cl)
for element in cleaned_html:
if element.text == 'PRICE':
print "matched"
如何使用Xpath表达式编写它?
我只需要使用xpath表达式获取div类路径.
另外,问题是如果我找到了“ PRICE:”字符串.
我应该必须获得父级有效标签,即类名称为“ price_class”的“ div”.
但在这里我应该跳过或删除不需要的标签,例如字体,粗体,斜体…
您能否建议我获取所定位字符串的父有效标签?
解决方法:
您可以使用祖先轴:
import lxml.html
html = ...
doc = lxml.html.fromstring(html)
for element in doc.xpath('//label[contains(text(), "PRICE:")]/ancestor::div[@class="price_class"]'):
print 'Found %s: %s' % (element.tag, element.text_content().strip())
输出:
Found div: PRICE: 125 Rs.
编辑:修改后的问题的更一般的解决方案:
doc.xpath('//*[contains(text(), "PRICE:")]/ ancestor::*[not(self::strong|self::bold|self::italic)][1]')
它将搜索带有文本“ PRICE:”的元素,然后选择第一个祖先,跳过强,粗体,斜体.您可以将更多标签添加到排除列表.
除了排除列表,您还可以搜索第一个好祖先(例如div,ul等):
doc.xpath('//*[contains(text(), "PRICE:")]/ancestor::*[self::div|self::ul][1]')
内容总结
以上是互联网集市为您收集整理的python-使用xpath获取部分字符串匹配的html标签全部内容,希望文章能够帮你解决python-使用xpath获取部分字符串匹配的html标签所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。