Я начинаю с XPATH
с lxml
на Python3
и не могу получить правильный синтаксис для выбора всех li
элементов с содержанием ul
. Я пытаюсь с этой структурой:
<body>
<div> ..... </div>
<div> ..... </div>
<div id="div-A">
<div id="subdiv-1">
<form> ... </form>
<div> ..... </div>
<div> ..... </div>
<ul>
<li>
<div id="div-1">
<div> ..... </div>
<div> ..... </div>
<div id="subdiv-1">
<a class="name">
<span>
....text1....
</span>
</a>
</div>
<div id="subdiv-2">
<div class="class-1">
<div class="subClass-1">
<div> ....text2.... </div>
</div>
<span class="subClass-2">
....text3....
</span>
</div>
</div>
</div>
</li>
... x23...
</ul>
</div>
</div>
</body>
Моя цель - получить text1 , text2 и text3 .
Итак, сначала я пытаюсь получить все элементы li
с их содержимым:
content = html_response.content
fixed_content = fromstring(content) # parse the HTML and correct malformed HTML
items = fixed_content.xpath('//ul/li/*')
И передать items
в функцию с циклом for для итерации 23 li
элементов. Сейчас я пытаюсь получить тексты, так:
for item in items:
text1 = item.xpath('/div[@id="div-1"]/div[@id="subdiv-1"]/a[@class="name"]/span').text_content()
text2 = item.xpath('/div[@id="div-1"]/div[@id="subdiv-2"]/div[@class="class-1"]/div[@class="subClass-1"]/div').text_content()
text3 = item.xpath('/div[@id="div-1"]/div[@id="subdiv-2"]/div[@class="class-1"]/div[@class="subClass-2"]/span[@class="subClass-2"]').text_content()
Но я получаю во всех случаях пустой результат без содержания. Что я делаю не так?
Привет.