Tôi muốn phân tích cú pháp HTML bằng lxml bằng cách sử dụng các biểu thức XPath. Vấn đề của tôi là phù hợp về nội dung của thẻ:Làm cách nào để khớp nội dung của một phần tử trong XPath (lxml)?
Ví dụ cho các yếu tố
<a href="http://something">Example</a>
tôi có thể phù hợp với thuộc tính href sử dụng
.//a[@href='http://something']
nhưng cho sự biểu hiện
.//a[.='Example']
hoặc thậm chí
.//a[contains(.,'Example')]
lxml ném ngoại lệ 'vị từ nút không hợp lệ'.
Tôi đang làm gì sai?
EDIT:
Ví dụ mã:
from lxml import etree
from cStringIO import StringIO
html = '<a href="http://something">Example</a>'
parser = etree.HTMLParser()
tree = etree.parse(StringIO(html), parser)
print tree.find(".//a[text()='Example']").tag
sản lượng dự kiến là 'a'. Tôi nhận được 'Lỗi Cú pháp: vị nút không hợp lệ'
Thay vì sử dụng StringIO, bạn có thể đã sử dụng etree.fromstring() để phân tích cú pháp html của bạn. –