HTML代码是盲目的,其中包含“PRICE”字符串。必须使用xpath将部分字符串与HTML文本匹配。如果部分匹配,应该返回特定的HTML标签路径。
注意:我需要为多个网站自动化此逻辑。我应该使用通用规则(查找“Price”,获取父标记)
这是一个示例:
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”。 但在这里,我应该跳过或删除不需要的标签,如font,bold,italic等。
你能建议一下如何获取已定位字符串的父有效标签吗?
lxml
支持XPath 1.0,而upper-case()
则是XPath 2.0的函数。作为解决方法,您可以使用类似以下的代码:translate(text(), "abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
。 - reclosedev