用java数据结构替换io文件



我的程序转到我的uni结果页面,找到所有链接并保存到文件中。然后我读取文件,只复制包含所需链接的行,并将其保存到另一个文件中。然后我再次解析它以提取所需的数据

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文件实用程序,jsoup

以下是如何摆脱第一个文件写入/读取:

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

如果我理解代码的话,第二次往返是为了提取符合特定测试的链接。你可以用同样的方法在记忆中做到这一点。

我看到您依赖Jsoup.parse从所选链接中提取href和链接文本。您可以在内存中执行此操作,方法是将所选节点写入StringBuffer,通过调用其toString()方法将其转换为String,然后使用Jsoup.parse方法之一,该方法采用String而不是File参数。

最新更新