Найти - Пользователи
Полная версия: Использование cssselect с заданием значения нужного атрибута
Начало » Python для новичков » Использование cssselect с заданием значения нужного атрибута
1
couatl
Имеется html-страница с примерно такой разметкой

<html>
<body>
<div class="content_block" id="content_1" style="display: block; ">
<ol>
<li>
<a href="/..." title="AAA">aa</a>
</li>
<li>
<a href="/..." title="BBB">bb</a>
</li>
<li>
<a href="/..." title="CCC">cc</a>
</li>
</ol>
</div>
<div class="content_block" id="content_2" style="display: block; ">
<ol>
<li>
<a href="/..." title="AAA2">aa2</a>
</li>
<li>
<a href="/..." title="BBB2">bb2</a>
</li>
<li>
<a href="/..." title="CCC2">cc2</a>
</li>
</ol>
</div>
</body>
</html>
Нужно выдернуть имена ссылок только из первого div'a.

for one in cleaned_html.cssselect( 'div ol li a' )
print one.text_content()
выдает
aa
bb
cc
aa2
bb2
cc2
то есть пихает и из второго div'a

Пробовал
for one in cleaned_html.cssselect( 'div#content_1.content_block ol li a' )
print one.text_content()
но не получилось.
pyuser
from lxml import etree

HTML = """<html>
<body>
<div class="content_block" id="content_1" style="display: block; ">
<ol>
<li>
<a href="/..." title="AAA">aa</a>
</li>
<li>
<a href="/..." title="BBB">bb</a>
</li>
<li>
<a href="/..." title="CCC">cc</a>
</li>
</ol>
</div>
<div class="content_block" id="content_2" style="display: block; ">
<ol>
<li>
<a href="/..." title="AAA2">aa2</a>
</li>
<li>
<a href="/..." title="BBB2">bb2</a>
</li>
<li>
<a href="/..." title="CCC2">cc2</a>
</li>
</ol>
</div>
</body>
<html>
"""

if "__main__" == __name__:
parser = etree.HTMLParser(remove_blank_text=True, strip_cdata=False)
html = etree.fromstring(HTML, parser)

# вариант 1
for node in html.find(".//div").iterfind(".//a"):
print(node.text)
# вариант 2
for node in html.iterfind(".//div[@id='content_1']/*//a"):
print(node.text)
jcrow
couatl
но не получилось.
Что именно не получилось? У меня вариант с
for one in cleaned_html.cssselect( 'div#content_1.content_block ol li a' )
print one.text_content()
работает.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB