Прошу прощения, если мой вопрос неправильно отформатирован, английский не мой родной язык.
Я пытаюсь получить таблицу по следующему URL-адресу Булапедия, Бульбазавр, но lxml дает мне очень странные результаты, когда я использую xpath.
Я пробовал следующее:
for elem in tree.xpath('//*[@id = "mw-content-text"]//table[14]//tr[3]//td//table//tr//td'):
print(etree.tostring(elem, pretty_print=True))
Это не дает мне нужных данных, а дает значения из данных другой таблицы, даже рандомизированные.
Я не знаю, что попробовать сейчас, cssselect тоже не вариант, поскольку кажется, что это меняется в зависимости от того, какого покемона я ищу.
@pguardiario Я пытаюсь получить следующее: i.imgur.com/FjvYxqW.png
используйте cssselect и выполните: th:contains("Weak to:") + td






За исключением первого элемента *[@id = "mw-content-text"], все остальные элементы в вашем XPath должны быть непосредственными дочерними элементами тех, которые были перед ними. Используя //, вы выбираете элементы любой глубины в родительском элементе, а это не то, что вам нужно.
Измените все, кроме первых //, на /, и все должно работать как задумано:
for elem in tree.xpath('//*[@id = "mw-content-text"]/table[14]/tr[3]/td/table/tr/td'):
print(etree.tostring(elem, pretty_print=True))
Я получаю точно такие же результаты: c
Разобрался на твоем примере! Спасибо!
Расскажите нам, что вы пытаетесь получить.