2016-05-18 2 views
3

Мне нужно извлечь некоторые данные с веб-страницы с помощью Jsoup.Получить текст без тегов с веб-страницы с помощью Jsoup

Я легко извлекал данные, содержащиеся в тегах, но мне все еще нужны некоторые данные, которые не помечены.

Это пример источника HTML:

<a id="aId" href="aLink" style="aStyle"> 
    <span id="spanId1"> 
     <b>Caldan Therapeutics</b> 
     Announces Key Appointments And A Collaboration With 
     <b>Sygnature Discovery</b> 
    </span> 
    <span id="spanId2" style="spanStyle2"> 
     5/17/2016 
    </span> 
</a> 

Я уже извлекали данные, содержащиеся в <b> тегов, а также дату, но то, что я хочу сейчас, чтобы извлечь предложение Announces Key Appointments And A Collaboration With.

Как вы можете видеть, в этом предложении нет меток.

Что делать, чтобы извлечь его?

Я уже провел свое исследование, и все, что я мог найти, это как удалить все теги.

Благодарим за помощь!

+0

Пожалуйста, следуйте этому сообщению http://stackoverflow.com/questions/12943734/jsoup-strip-all-formatting-and-link-tags-keep-text-only – shankarsh15

+0

Я уже видел, что один и все, что он делает, это вырезать html-теги. Это не то, что я хочу. Я хочу извлечь только немаркированное предложение «Объявляет о ключевых встречах и сотрудничестве с» – user1885868

ответ

4

Я нашел anwser для этой конкретной необходимости, и я хотел бы поделиться им с любым, кто может столкнуться с тем же вопросом в будущем.

Все, что вы можете сделать, это использовать функцию ownText(), она вытесняет текст из тегов детей элемента.

В нашем примере:

public static void main(String[] args) throws Exception { 
    Document doc = Jsoup.connect("http://source-url").get(); 
    Elements spanTags = doc.getElementsByTag("span"); 
    for (Element spanTag : spanTags) { 
     String text = spanTag.ownText(); 
     System.out.println(text); 
    } 
} 
+1

Пожалуйста, отметьте это как ответ. Ответ на ответ и маркировка вашего ответа не считаются плохими в StackOverflow. ;) – Sufian

+0

@Sufian сделал, спасибо, что напомнил мне! – user1885868

2

Вы также можете сделать это, используя следующий код, но он возвращает текст в виде строки, заменить пункты с «\ п» и не позволит обнаружить текст стили (например, жирный шрифт, курсив и т. д.).

Если вы хотите, чтобы получить простой текст, это действительно полезно:

Element aElem = doc.getElementById("spanId1"); 
String yourText = aElem.wholeText(); 

Если в вашем случае, если вы используете aId в качестве идентификатора для элемента, вы также получите содержание spanId2 и не сможет легко определить, какая часть вашего текста является датой.

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