0

リンク( http://www.informatik.uni-trier.de/~ley/pers/hd/k/Kumar:G=_Praveen.htm)からテーブルからサブ文字列を抽出するのに助けが必要です。

著者の名前だけを抽出して2D配列に保存する必要があります。例:

a[0][0]= G. Praveen kumar
a[0][1]= Anirban Sakar.
a[1][0]= G. Praveen Kumar,
a[1][1]= Arjun Kumar Murmu,
a[1][2]= Biswas Parajuli ,
a[1][3]= Prasenjit Choudhury

次の行(表の最後まで)についても同様です...私が試したコードを以下に示します。

著者の名前(部分文字列)を抽出して2D配列に格納する必要があります。名前はコンマで区切られ、:の後に記事の名前が続くためです。記事の名前をに格納したくない2D配列ですが、テーブルの終わりにいる人の名前のみです。

どんな助けでもいただければ幸いです。前もって感謝します。

package codetrial;
import java.io.*;
import java.lang.String.*;
import org.jsoup.*;
import org.jsoup.nodes.*;
import java.io.BufferedWriter.*;
import java.io.FileWriter.*;
import java.io.IOException.*;
import java.util.*;
import org.apache.commons.lang.StringUtils;

public class Main {
    public static void main(String[] args) {
        try{
            String a;
            final String url="http://www.informatik.unitrier.de/~ley/pers/hd/k/Kumar:G=_Praveen.html";              
            Document doc = Jsoup.connect(url).get();
            for(Element element : doc.select("table div.data") ) {
                a = element.text();
                String[] names = a.split(", "); // comma and space
                String name_one = StringUtils.substringBetween(url, " ", ",");
                String name_two = StringUtils.substringBetween(url, ",", ":");
                System.out.println("person1 = " + name_one);
                System.out.println("person2 = " +name_two);
                for(String name : names) {
                    System.out.println(name);        
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
4

2 に答える 2

2

これを行うには、 Jsoupライブラリを使用できます。私の例を参照してください:

import java.util.ArrayList;
import java.util.List;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class SourceCodeProgram {

    public static void main(String[] args) throws Exception {
        System.out.println(PageParser.readAuthors("http://www.informatik.uni-trier.de/~ley/pers/hd/k/Kumar:G=_Praveen.htm"));
    }
}

class PageParser {
    public static List<List<String>> readAuthors(String url) throws Exception {
        Document document = Jsoup.connect(url).get();
        Elements elements = document.getElementsByClass("data");
        List<List<String>> result = new ArrayList<List<String>>();
        List<String> authors = new ArrayList<String>();
        for (Element element : elements) {
            for (Element child : element.children()) {
                if ("title".equals(child.className())) {
                    result.add(authors);
                    authors = new ArrayList<String>();
                    break;
                }
                authors.add(child.html());
            }
        }
        return result;
    }
}

出力:

[[G. Praveen Kumar, Anirban Sarkar], [G. Praveen Kumar, Arjun Kumar Murmu, Biswas Parajuli, Prasenjit Choudhury], [G. Praveen Kumar, Anirban Sarkar, Narayan C. Debnath]]
于 2013-02-03T18:52:24.713 に答える
0

forループ内で以下のコードを使用します

           String htmlString = element.text();
           a = htmlString.replaceAll("\\<.*?>","");
            String names = a.split(":")[0].split(",");
            for(String name : names) {
                System.out.println(name);        
            }
于 2013-02-03T21:17:27.427 に答える