2012-06-05 27 views
7

Tôi đang cố gắng để phân tích với lxml trong python và đây là kết quả của tôiLọc ra hài lòng với phong cách hiển thị: none trong một biểu thức XPath

<td> 
    <span style="display:inline">text1</span> 
    <span style="display:none">text2</span> 
    <span>text3</span> 
    text4 
</td> 

Nghĩ rằng tôi đã đủ thông minh để sử dụng sau đây

tree = tr.xpath("//*[contains(@style,'inline')]/text()") 

Nhưng sau đó tôi nghĩ rằng tôi sẽ chỉ thấy text1. Những gì tôi muốn là để xem Text3 và text4 quá do đó sản lượng sẽ được

[ 'text1', 'Text3', 'text4']

bất cứ ai có thể gửi cho tôi để đi đúng hướng để làm việc đó?

Trả lời

6

Rõ ràng loại trừ bất cứ điều gì với display:none:

tree = tr.xpath("//*[not(contains(@style,'display:none'))]/text()") 

Điều đó nói rằng - đây chỉ là một xấp xỉ xa của những gì một trình duyệt thực sự sẽ làm gì; bạn muốn lái một trình duyệt thực (như với Selenium, nhúng API, hoặc tương tự) nếu bạn yêu cầu kết quả chính xác.

Các vấn đề liên quan