0

私のプログラムは私の大学の結果ページに行き、すべてのリンクを見つけてファイルに保存します。次に、ファイルを読み取り、必要なリンクを含む行のみをコピーして、別のファイルに保存します。次に、それを再度解析して、必要なデータを抽出します

public class net {

    public static void main(String[] args) throws Exception {
        Document doc = Jsoup.connect("http://jntuconnect.net/results_archive/").get();

        Elements links = doc.select("a");
        File f1 = new File("flink.txt");
        File f2 = new File("rlink.txt");

            //write extracted links to f1 file
        FileUtils.writeLines(f1, links);

            // store each link from f1 file in string list
        List<String>  linklist  = FileUtils.readLines(f1);

            // second string list to store only required link elements
        List<String> rlinklist = new ArrayList<String>();

        // loop which finds required links and stores in rlinklist 
        for(String elem : linklist){
            if(elem.contains("B.Tech") && (elem.contains("R07")||elem.contains("R09"))){
                rlinklist.add(elem);                
            }           
        }           
        //store required links in f2 file
        FileUtils.writeLines(f2, rlinklist);

        // parse links from f2  file
        Document rdoc = Jsoup.parse(f2, null);
        Elements rlinks = rdoc.select("a");

        //  for storing hrefs and link text 
        List<String> rhref = new ArrayList<String>();
        List<String> rtext = new ArrayList<String>();

        for(Element rlink : rlinks){
            rhref.add(rlink.attr("href"));
            rtext.add(rlink.text());
        }

    }// end main

}

これを行うためのファイルを作成したくありません。ファイルを作成せずに特定のURLのみのhrefとリンクテキストを取得するためのより良い方法はありますか?

Apache commons fileutils、jsoupを使用します

4

1 に答える 1

1

最初のファイルの書き込み/読み取りを取り除く方法は次のとおりです。

Elements links = doc.select("a");
List<String> linklist = new ArrayList<String>();
for (Element elt : links) {
    linklist.add(elt.toString());
}

2番目のラウンドトリップは、コードを理解している場合、特定のテストを満たすリンクを抽出することを目的としています。同じ手法を使用して、メモリ内でそれを行うことができます。

Jsoup.parse選択したリンクからhrefとリンクのテキストを抽出することに依存しているようです。選択したノードをに書き込み、そのメソッドを呼び出してStringBufferに変換し、引数の代わりに引数を取るメソッドの1つを使用することで、メモリ内でこれを行うことができます。StringtoString()Jsoup.parseStringFile

于 2012-07-11T04:24:57.560 に答える