2015-04-27 2 views
0

Я создаю небольшой скрипт, который должен найти определенную строку на странице и вернуть xpath элемента, содержащего эту строку. Цель состоит в том, чтобы использовать этот xpath для поиска строки с тем же контекстом.python - найти xpath элемента, содержащего строку

Я использую этот код:

import requests 
from lxml import html 
page = requests.get("http://www.w3schools.com/xpath/") 
tree = html.fromstring(page.text) 
result = tree.xpath('//*[. = "XML"]') 

result[0] возвращает <Element b at 0x7f034a08e940> и я не могу понять, как найти XPath этого элемента в любом случае.

Строка Я хотел бы иметь это:

/html/body/div[4]/div/div[2]/div[2]/div[1]/div/ul/li[2] 

ответ

3

Вы можете использовать getpath(), чтобы получить от element XPath, например:

import requests 
from lxml import html 

page = requests.get("http://www.w3schools.com/xpath/") 
root = html.fromstring(page.text) 
tree = root.getroottree() 
result = root.xpath('//*[. = "XML"]') 
for r in result: 
    print(tree.getpath(r)) 

Выход:

/html/body/div[3]/div/ul/li[10] 
/html/body/div[3]/div/ul/li[10]/a 
/html/body/div[4]/div/div[2]/div[2]/div[1]/div/ul/li[2] 
/html/body/div[5]/div/div[6]/h3 
/html/body/div[6]/div/div[4]/h3 
/html/body/div[7]/div/div[4]/h3 
Смежные вопросы