Используйте xpath или xquery для отображения текста в атрибуте title

Я хотел бы использовать xquery (я полагаю) для вывода текста из атрибута title элемента html.

Пример:

<div class="rating" title="1.0 stars">...</div>

Я могу использовать xpath для выбора элемента, но он пытается вывести информацию между тегами div. Я думаю, мне нужно использовать xquery для вывода текста «1.0 звезд» из атрибута title.

Должен быть способ сделать это. Мои навыки Google оказываются неэффективными при поиске ответа.

Спасибо.


person Nick J.    schedule 06.06.2013    source источник


Ответы (2)


XPath: //div[@class='rating']/@title

Это даст вам текст заголовка для каждого div с классом «рейтинг».

Дополнение (следующее из комментариев ниже):

Если в классе помимо «рейтинга» есть другой, дополнительный текст, то можно использовать что-то вроде этого:

//div[contains(concat(' ', normalize-space(@class), ' '), ' rating ')]

(Подсказка к Как я могу сопоставить атрибут, который содержит определенную строку?).

person jwismar    schedule 06.06.2013
comment
Кажется, это работает на определенных сайтах. Но не на сайте, с которого мне нужно получить данные. Например, если вы переходите на этот сайт: play.google.com/store/apps/, а затем попробуйте вытащить текст заголовка из разделов с классом «рейтинги», это не сработает. Есть идеи? - person Nick J.; 10.06.2013
comment
Насколько я могу судить, это не XML-страница. Его DOCTYPE указан как HTML, и, похоже, не указано, что это XHTML. Возможно, вы не сможете использовать синтаксический анализатор XML для запроса этого. - person jwismar; 11.06.2013
comment
Странно то, что я могу без проблем вытащить другие данные с этой страницы. Например, дата для каждого обзора работает с этим xpath: - person Nick J.; 11.06.2013
comment
Вы пытаетесь найти, например, этот div? <div class="ratings goog-inline-block" title="Rating: 4.1 stars (Above average)" itemprop="ratingValue" content="4.1"> Обратите внимание, что класс в данном случае — "ratings goog-inline-block", а не "ratings". См., например, stackoverflow.com/questions/1390568/ - person jwismar; 11.06.2013
comment
Странно то, что я могу без проблем вытащить другие данные с этой страницы. Например, дата каждого отзыва работает с этим xpath://span[@class='doc-review-date'], а комментарии к каждому отзыву: //div[@class='doc-user-reviews-list']//p[@class='review-text']. Но когда я пытаюсь вытащить заголовок с рейтингом для обзора, ничего не вытягивается. Если бы только Google построил эту страницу с методом «сначала контент», который сейчас в моде. - person Nick J.; 11.06.2013
comment
Это xpath, который я только что пытался использовать: //div[@class='ratings goog-inline-block']/@title - person Nick J.; 11.06.2013
comment
Если это кому-то поможет, я пытаюсь сделать это в электронной таблице Google Диска, используя функцию importxml. Все другие мои импорты xpath работают нормально. - person Nick J.; 11.06.2013

Вы должны использовать:

let $XML := <p><div class="rating" title="2.0 stars">sdfd</div><div class="rating" title="1.0 stars">sdfd</div></p>
for $title in $XML//@title
return
  <p>{data($title)}</p>

чтобы получить вывод:

<p>2.0 stars</p>
<p>1.0 stars</p>
person Navin Rawat    schedule 07.06.2013