使用Jsoup提取文本

时间:2013-05-07 09:43:47

标签: java jsoup

我正在尝试从以下页面获取信息:http://fantasynews.cbssports.com/fantasyfootball/players/updates/187741

我需要为每个项目获取单独的字符串:

  1. 新闻标题
  2. 新闻
  3. 分析
  4. 现在我可以使用以下方法从整个表格中获取信息:

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

    但结果是所有文章都在一起运行。

    有人可以提供建议吗?

    由于 约什

1 个答案:

答案 0 :(得分: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