0

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

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

  1. 新闻标题
  2. 消息
  3. 分析

现在我可以使用以下方法从整个表中获取信息:

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

但是这样做的结果是所有的文章都跑在一起了。

任何人都可以建议吗?

谢谢乔什

4

1 回答 1

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 文档

于 2013-05-07T09:59:02.653 回答