2015-09-27 3 views
2

Я ищу, чтобы извлечь часть строки, используя xPath.Справка xPath - выбор определенного слова в строке

Полная строка -

Информационный (публицистическое), 1303 слов, уровень S (класс 3)

HTML код:

<div class="bookInfo"> 
    Informational (nonfiction), 
1,303 words, 
Level S (Grade 3) 
</div> 

Я ищу, чтобы извлечь только количество слов из этих строк, то есть - 1,303 words в этом случае

XPATH этой строки выглядит

//*[@id="contentarea-inner"]/div[3]/div[2]/div 

Веб-страница в вопросе - https://www.readinga-z.com/books/leveled-books/book/?id=820

Просьба сообщить о том, как я могу изменить XPATH таким образом, чтобы извлечь только количество слов со страницы. У меня есть несколько тысяч страниц, чтобы получить эту информацию от

Благодарности

ответ

1

В принципе, вам нужны как xpath, так и регулярное выражение:

  1. Получить текст узла div по xPath (см. Код Shubham Jain)
  2. Применить регулярное выражение к тексту; например. это: \s[,\d]+(?= words). См. regex's work на текстовом узле.
+0

Большое спасибо, Игорь –

+1

@pb_ng, добро пожаловать. –

1

Вы можете достичь же с помощью разделения функции в Java

Используйте код: -

String text= driver.findElement(By.xpath("//*[@id='contentarea-inner']/div[3]/div[2]/div")).getText(); 
String count1 = text.split(",")[1]; 
String count2 = text.split(",")[2]; 
String count = count1 + count2; 
System.out.println(count); 

Пожалуйста, вернуться ко мне, если все еще сталкиваются с какой-либо проблемой :)

+0

Спасибо Subham - не могли бы вы сообщить мне xPath, в котором я мог бы получить только слова no.of на этой строке. Мне нужно использовать xPath в приложении для извлечения no. слов этих страниц. Я не могу использовать Java-код для этого. Спасибо –

+0

@ShubhamJain, поскольку вы используете 'test.split (',')' результат может быть неправильным, потому что текст подобен этому ... ..., 1,303 слов, 'с запятой внутри номера! –

+0

@IgorSavinkin -> да, вы абсолютно правы ... thanx для указания .. Я внес изменения соответственно –

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