扫描给定格式Jsoup Java的网站链接
我尝试根据选择器级别扫描网页中的所有链接 这是我的声明,我已经阅读了选择器的某种固定方式,我想阅读它更多的循环,递归或任何帮助我变得更灵活的命令级别选择器我的未来可能会大于2扫描给定格式Jsoup Java的网站链接,java,jsoup,Java,Jsoup,我尝试根据选择器级别扫描网页中的所有链接 这是我的声明,我已经阅读了选择器的某种固定方式,我想阅读它更多的循环,递归或任何帮助我变得更灵活的命令级别选择器我的未来可能会大于2 public static void main(String[] args) { String website = website("http://www.java2s.com/"); System.out.println(website); } private stati
public static void main(String[] args) {
String website = website("http://www.java2s.com/");
System.out.println(website);
}
private static String website(String url) {
String lstLink = "";
try {
String level[] = {"div.col-md-9 li a", "div#sidebar ul li a"};
//Level 1
Document connect = Jsoup.connect(url).get();
Elements selectLevel1 = connect.select(level[0]);
for (Element level1 : selectLevel1) {
lstLink += level1.attr("href") + "\n";
//Level2
Document connect2 = Jsoup.connect(level1.attr("href")).get();
Elements selectLevel2 = connect2.select(level[1]);
for (Element level2 : selectLevel2) {
lstLink += level2.attr("href") + "\n";
}
}
} catch (IOException ex) {
Logger.getLogger(AWebsite.class.getName()).log(Level.SEVERE, null, ex);
}
return lstLink;
}
请检查一下
static String levels[] = {"div.col-md-9 li a", "div#sidebar ul li a"};
private static String getRecursive(String href, int level) {
String links = "";
if (level > levels.length-1) {
return "";
}
Document doc;
try {
doc = Jsoup.connect(href).get();
Elements elements = doc.select(levels[level]);
level++;
for (Element element : elements) {
if(!element.attr("href").isEmpty())
{
links += element.attr("abs:href") + "\n";
links += getRecursive(element.attr("abs:href"), level);
}
}
} catch (IOException e1) {
e1.printStackTrace();
}
return links;
}
public static void main(String[] args) {
String website = getRecursive("http://www.java2s.com/", 0);
System.out.println(website);
}
太好了,谢谢你,它不仅解决了选择阅读每一级的问题,而且还取出了页面的完整绝对路径。在附加路径时,我必须认真思考,因为我得到的路径是相对的