2014-11-18 4 views
0

Вот это HTML я имею дело сСелен XPath несколько атрибутов, включая текст

<a class="_54nc" href="#" role="menuitem"> 
    <span> 
     <span class="_54nh">Other...</span> 
    </span> 
</a> 

Я не могу показаться, чтобы получить мой XPath структурированы правильно, чтобы найти этот элемент со ссылкой. На странице есть другие элементы с теми же атрибутами, что и <a class="_54nc">, поэтому я думал, что начну с ребенка, а затем перейду к родительскому.

Я попробовал несколько вариантов, но я думаю, что-то вроде этого:

crawler.get_element_by_xpath('//span[@class="_54nh"][contains(text(), "Other")]/../..') 

Ни одна из вещей, которые я пробовал, кажется, работает. Любые идеи будут высоко оценены.

ответ

1

Или, более уборщик //*[.='Other...']/../.. и . вы прямо указывает на родительский элемент

В другом сценарии, если вы хотите, чтобы найти a тег затем использовать CSS [role='menuitem'], который является лучшим вариантом, если role атрибут является уникальным

+0

Это работает. Спасибо! – AutomaticStatic

+0

Рад, что помогло вам! – Saifur

0

как о попытке это

crawler.get_element_by_xpath('//a[@class="_54nc"][./span/span[contains(text(), "other")]]') 
0

Попробуйте это:

crawler.get_element_by_xpath ('// a [@class =' ​​_ 54nc '] // span [. =' Other ... ']');

Это будет искать элемент 'a' с классом как "_54nc" и содержать точный текст/innerHTML "Other ...". Кроме того, вы можете просто отредактировать текст «Другое ...» с другими текстами, чтобы найти соответствующий элемент (ы)

+0

Это не работает. Он все еще не может найти элемент. – AutomaticStatic

+0

отредактировали мой код ... попробуйте приведенный выше – Subh

Смежные вопросы