python lxml: если найдено td, то показать другое td

328
25 ноября 2017, 09:09

Дана таблица:

table='''<table>
    <tr>
        <td>Num of something 1</td>
        <td>4532</td>
        <td>78</td>
    </tr>
    <tr>
        <td>Num of something 2</td>
        <td>0</td>
        <td>235</td>
    </tr>
    <tr>
        <td>Num of something 3</td>
        <td>8</td>
        <td>6589</td>
    </tr>
</table>'''
if root.xpath('.//td[text()="'+string_parameter+'"]'):
    result = item.xpath('//td[position()=3]')

Нужно сделать так: если найден Num of something 3, то вывести 6589

Answer 1
from lxml import etree
root = etree.fromstring(table)
print root.xpath("//td[text()='{}']/../td[3]".format("Num of something 3"))[0].text #выведет 6589

Python сначала найдет элемент с текстом Num of something 3, потом поднимется на уровень выше и оттуда найдет третий элемент с тегом td

READ ALSO
Запрос геолокации с браузера

Запрос геолокации с браузера

Какими методами можно делать запросы с браузера на геолокацию ? Чтобы возвращало на подобии такого: 43048538, 44

307
Расстояние между строками таблицы и их границами. HTML

Расстояние между строками таблицы и их границами. HTML

Какими средствами в html можно сделать таблицу как на картинке?

348
Преобразование sql-запроса в Laravel 5.3 Eloquent

Преобразование sql-запроса в Laravel 5.3 Eloquent

У меня запрос sql выглядит так

270