我使用tree.xpath
遍歷所有有趣的HTML元素,但我需要能夠判斷當前元素是否是某個CSS類的一部分。python lxml - 簡單地獲取/檢查HTML元素的類
from lxml import html
mypage = """
<div class="otherclass exampleclass">some</div>
<div class="otherclass">things</div>
<div class="exampleclass">are</div>
<div class="otherclass">better</div>
<div>left</div>"""
tree = html.fromstring(mypage)
for item in tree.xpath("//div"):
print("testing")
#if "exampleclass" in item.getListOfClasses():
# print("foo")
#else:
# print("bar")
整體結構應該保持不變。
什麼是快速檢查當前div
是否具有exampleclass
類的方法?
在上面的例子中,item
是lxml.html.HtmlElement
類,它具有這樣的特性classes
的,但我不明白這是什麼意思:
類
圍繞「類的一組類似的包裝屬性。獲取方法:
unreachable.classes(self)
- 圍繞「class屬性的集合類包裝。設置方法:
unreachable.classes(self, classes)
它返回一個lxml.html.Classes
對象,其中有一個__iter__
方法,它原來iter()
作品。所以我構造這個代碼:
for item in tree.xpath("//div")
match = False
for classname in iter(item.classes):
if classname == "exampleclass":
match = True
if match:
print("foo")
else:
print("bar")
但我希望有一個更優雅的方法。
我試過尋找類似的問題,但我發現的所有東西都是各種各樣的「我如何獲得'classname'的所有元素」,但是我需要所有的div
s在循環中,我只是想對待它們中的一些。
不錯,謝謝。我不能使用選擇器,因爲我需要循環中帶有和不帶有類的'div',更新示例代碼以希望更清晰。 'xpath'' contains'在存在類'exampleclass-numbertwo'的情況下會產生問題,請參閱http://stackoverflow.com/a/1604480/188159 – qubodup
@qubodup,這就是爲什麼我添加*根據案件*。你在尋找多個班還是隻有一個班? –