我的程序转到我的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
参数。