Java'da yeniyim, ufak bir deneme yaptım, önümüzdeki günlerde Object Oriented bir biçimde ve unique linklerin hepsini alan ve hepsini ziyaret eden birtane paylaşıcam. Hala üzerinde çalışıyorum boş oldukça. ekstradan bir class daha yazıp test yapabilir hale getiricem. Kolay gelsin
Kod:
package com.l0z.crawlerv1;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.Arrays;
import org.jsoup.Connection;
/*****
*
* @author l0z @ SpyHackerz
*
*/
public class crawlIT {
public static void main(String[] args) throws IOException {
String url = "http://website.net/"; //denenecek websitenin adı
final String USER_AGENT =
"Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Ubuntu/10.10 Chromium/8.0.552.237 Chrome/8.0.552.237 Safari/534.10";
print("Bağlantı kuruluyor: %s...", url);
Connection baglanti = Jsoup.connect(url).userAgent(USER_AGENT);
Document doc = baglanti.get();
if( baglanti.response().statusCode() == 200) // HTTP 200 alıyorsan devam et.
{
System.out.println("\n <Bağlantı kuruldu> ");
}
Elements links = doc.select("a[href]");
Elements imports = doc.select("link[href]");
print("\nLinkler: (%d)", links.size());
for (Element link : links) {
parseIT(link.attr("abs:href"));
}
print("\nİçe Aktarılan Veriler(css vb.): (%d)", imports.size());
for (Element link : imports) {
print(" * %s <%s> (%s)", link.tagName(),link.attr("abs:href"), link.attr("rel"));
}
}
public static void parseIT(String string){
String delims = "[/]+";
String delims2 = "[.]+";
String[] tokens = string.split(delims);
if(tokens.length > 1){
String[] tokens2 = tokens[1].split(delims2);
if(Arrays.asList(tokens2).contains("websitelinkininkeywordu"))
System.out.println(string);
}
}
private static void print(String msg, Object... args) {
System.out.println(String.format(msg, args));
}
private static String trim(String s, int uzunluk) {
if (s.length() > uzunluk)
return s.substring(0, uzunluk-1) + ".";
else
return s;
}
}