ウェブページのリンクをスキャンするには、JSoupライブラリを使用できます。前の回答で提案されているように
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
class read_data {
public static void main(String[] args) {
try {
Document doc = Jsoup.connect("**your_url**").get();
Elements links = doc.select("a");
List<String> list = new ArrayList<>();
for (Element link : links) {
list.add(link.attr("abs:href"));
}
} catch (IOException ex) {
}
}
}
リストを使用することができます。
ウェブサイト上のすべてのリンクを読むためのコードを以下に示します。私は説明のためにhttp://stackoverflow.com/
を使用しました。私はそれがウェブサイトをscarpingする前に会社のterms of useを通過することをお勧めします。
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
public class readAllLinks {
public static Set<String> uniqueURL = new HashSet<String>();
public static String my_site;
public static void main(String[] args) {
readAllLinks obj = new readAllLinks();
my_site = "stackoverflow.com";
obj.get_links("http://stackoverflow.com/");
}
private void get_links(String url) {
try {
Document doc = Jsoup.connect(url).get();
Elements links = doc.select("a");
links.stream().map((link) -> link.attr("abs:href")).forEachOrdered((this_url) -> {
boolean add = uniqueURL.add(this_url);
if (add && this_url.contains(my_site)) {
System.out.println(this_url);
get_links(this_url);
}
});
} catch (IOException ex) {
}
}
}
uniqueURL
フィールドにすべてのリンクの一覧が表示されます。
どのように私はサブリンクのためにウェブサイト全体をスキャンするでしょう –
あなたの実装は、ウェブサイト内のすべての内部リンクを取得した後に動作します –
私の編集を確認してください@javafan ** robots.txt **を読むことですあなたはそこからサブリンクを抽出することができますので、Webサイトのすべての情報が含まれています –