2013-05-07 3 views
0

Я пытаюсь получить информацию из следующей странице: http://fantasynews.cbssports.com/fantasyfootball/players/updates/187741Извлечение текста с Jsoup

Мне нужно, чтобы получить отдельные строки для каждого из этих элементов:

  1. Заголовок новости
  2. Новости
  3. Анализ

Сейчас я могу получить информацию из всей таблицы, используя:

doc = Jsoup.connect("http://fantasynews.cbssports.com/fantasyfootball/players/updates/" + playerId).timeout(30000).get(); 
Element title = doc.select("[id*=newsPage1]").first(); 

Но результатом этого являются все статьи, которые работают вместе.

Может ли кто-нибудь посоветовать?

Благодаря Джош

ответ

0

Вы должны использовать более сложные CSS-селекторы. Может быть что-то вроде:

public static void main(String[] args) { 
    Pattern pat = Pattern.compile("(.*)News\\:\\p{Zs}(.*)Analysis\\:\\p{Zs}(.*)", Pattern.UNICODE_CASE); 
    Document doc = null; 
    try { 
    doc = Jsoup.connect("http://fantasynews.cbssports.com/fantasyfootball/players/updates/187741").userAgent("Mozilla").get(); 
    } catch (IOException e1) { 
    e1.printStackTrace(); 
    System.exit(0); 
    }; 

    Elements titles = doc.select("table h3"); 
    for (Element title : titles){ 
    Element td = title.parent(); 
    String innerTxt = td.text(); 
    Matcher mat = pat.matcher(innerTxt); 
    if (mat.find()){ 
     System.out.println("titel = " + mat.group(1)); 
     System.out.println("news = " + mat.group(2)); 
     System.out.println("analysis = " + mat.group(3)); 
    } 
    } 
} 

Я предлагаю вам посмотреть в CSS селекторов и JSoup documentation.

+0

Можете ли вы помочь с отсутствием кода для функции поиска? Мне не удалось найти информацию по ссылке, которую вы опубликовали. – Josh

+0

Я изменил свой пример. возможно, что работает ... – luksch

+0

Отличный ответ! Спасибо. Можно ли легко выбрать дату для каждой записи с помощью этого решения? Кроме того, вы можете получить бесплатную помощь Jsoup? – Josh

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