Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 29455|Svar: 11

[Java kildekode] Java-versionen af webcrawleren

[Kopier link]
Opslået på 30/11/2014 16.56.56 | | | |
[mw_shl_code=java, sandt]/**
* @author Jack.Wang
*
*/
import java.io.BufferedReader;
import java.io.InputStreamReader;
importere java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

Søg efter webcrawlere
offentlig klasse SearchCrawler implementerer Runnable {

/*
  * disallowListCache cache-robotten tillader ikke søgning i URL'er. Robot-protokollen sætter en robots.txt-fil i rodmappen på hjemmesiden,
  * Specificerer, hvilke sider på siden der kan søges i begrænset søge.
  * Søgeprogrammet bør springe disse områder over under søgningen, her er et eksempel på robots.txt:
  * # robots.txt for http://somehost.com/ User-agent:
  * Disallow: /cgi-bin/
  * Afvis: /registrering # Forbyder robotter på registreringssiden
  * Ikke tilladt: /log ind
  */

privat HashMap<String, ArrayList<String>> disallowListCache = ny HashMap<String, ArrayList<String>>();
ArrayList<String> errorList = ny ArrayList<String>(); Fejlmeddelelse
ArrayList-resultat<String> = ny ArrayList<String>(); Søgte resultater
String startUrl; Et udgangspunkt for at starte din søgning
int maxUrl; Det maksimale antal URL'er, der er behandlet,
String searchString; Strenge at søge efter
boolsk kasusSensitiv = falsk; Om man skal være case-sensitiv eller ej
boolean limitHost = falsk; Om man skal søge inden for en begrænset vært

public SearchCrawler(String startUrl, int maxUrl, String searchString) {
  this.startUrl = startUrl;
  this.maxUrl = maxUrl;
  this.searchString = searchString;
}

public ArrayList<String> getResult() {
  returneringsresultat;
}

public void run() { // Start søgetråden
  crawl(startUrl, maxUrl, searchString, limitHost, caseSensitive);
}

Detekter URL-formatering
private URL verifyUrl(String url) {
  Kun HTTP-URL'er behandles.
  hvis (!url.toLowerCase().startsWith("http://"))
   returner null;
  URL verifiedUrl = null;
  try {
   verifiedUrl = ny URL(url);
  } catch (Undtagelse e) {
   returner null;
  }
  returneretUrl;
}

Registrerer om robotten tillader adgang til den givne URL.
private boolean isRobotAllowed(URL urlToCheck) {
  String host = urlToCheck.getHost().toLowerCase(); Få den vært, der giver RUL
  System.out.println("host="+host);

  Få en cache af URL'er, som din vært ikke tillader søgning i
  ArrayList<String> disallowList = disallowListCache.get(host);

  Hvis du ikke allerede har en cache, så download og cache den.
  hvis (disallowList == null) {
   disallowList = ny ArrayList<String>();
   try {
    URL robotsFileUrl = ny URL ("http://" + host + "/robots.txt");
    BufferedReader reader = ny BufferedReader(
      ny InputStreamReader(robotsFileUrl.openStream()));

    Læs robotfilen for at oprette en liste over stier, der ikke må tilgås.
    Strenglinje;
    mens ((linje = reader.readLine()) != null) {
     hvis (line.indexOf("Disallow:") == 0) {// Indeholder det "Disallow:"
      Streng disallowPath = line.substring("Disallow:"
        .længde()); Få stien til afvist adgang

      Tjek for kommentarer.
      int commentIndex = disallowPath.indexOf("#");
      hvis (commentIndex != -1) {
       disallowPath = disallowPath.substring(0,
         commentIndex); Fjern kommentaren
      }

      disallowPath = disallowPath.trim();
      disallowList.add (disallowPath);
     }
    }

    Cachestier, som denne vært ikke har adgang til.
    disallowListCache.put(host, disallowList);
   } catch (Undtagelse e) {
    returner sand; Der er ingen robots.txt filer i rodmappen på hjemmesiden, og den returnerer true
   }
  }

  Strengfil = urlToCheck.getFile();
  System.out.println("Fil getFile()="+file);
  for (int i = 0; i < disallowList.size(); i++) {
   String disallow = disallowList.get(i);
   hvis (file.startsWith(disallow)) {
    return false;
   }
  }

  returner sand;
}

privat String downloadPage(URL pageUrl) {
  try {
   Åbn forbindelse til URL for læsning.
   BufferedReader reader = ny BufferedReader(ny InputStreamReader(
     pageUrl.openStream()));

   Læs siden ind i bufferen.
   Strenglinje;
   StringBuffer pageBuffer = ny StringBuffer();
   mens ((linje = reader.readLine()) != null) {
    pageBuffer.append(linje);
   }

   return pageBuffer.toString();
  } catch (Undtagelse e) {
  }

  returner null;
}

Fjern "www" fra URL'en
privat String removeWwwFromUrl(String url) {
  int index = url.indexOf("://www.");
  hvis (indeks != -1) {
   returner url.substring(0, indeks + 3) + url.substring(index + 7);
  }

  return (URL);
}

Parse siden og find linket
privat ArrayList<String> henteLinks(URL pageUrl, Streng pageIndhold,
   HashSet crawledList, boolean limitHost) {
  Kompiler matchningsmønsteret for linket med regulære udtryk.
  Mønster p = Pattern.compile("<a\\s+href\\s*=\\s*\"?(. *?) [\"|>]",
    Pattern.CASE_INSENSITIVE);
  Matcher m = p.matcher(pageContents);

  ArrayList<String> linkList = ny ArrayList<String>();
  mens (m.find()) {
   Strenglink = m.group(1).trim();

   hvis (link.length() < 1) {
    fortsæt;
   }

   Spring linket til denne side over.
   hvis (link.charAt(0) == '#') {
    fortsæt;
   }

   hvis (link.indexOf("mailto:") != -1) {
    fortsæt;
   }

   if (link.toLowerCase().indexOf("javascript") != -1) {
    fortsæt;
   }

   hvis (link.indexOf("://") == -1) {
    hvis (link.charAt(0) == '/') {// håndterer absolut
     link = "http://" + pageUrl.getHost() + ":"
       + pageUrl.getPort() + link;
    } ellers {
     Strengfil = pageUrl.getFile();
     hvis (file.indexOf('/') == -1) {// håndterer relative adresser
      link = "http://" + pageUrl.getHost() + ":"
        + pageUrl.getPort() + "/" + link;
     } ellers {
      Strengsti = file.substring(0,
        file.lastIndexOf('/') + 1);
      link = "http://" + pageUrl.getHost() + ":"
        + pageUrl.getPort() + sti + link;
     }
    }
   }

   int index = link.indexOf('#');
   hvis (indeks != -1) {
    link = link.substring(0, indeks);
   }

   link = fjernWwwFromUrl(link);

   URL verifiedLink = verifyUrl(link);
   hvis (verificeretLink == null) {
    fortsæt;
   }

   /* Hvis du begrænser værter, skal du udelukke de URL'er, der ikke opfylder kriterierne */
   hvis (limitHost
     && !pageUrl.getHost().toLowerCase().equals(
       verifiedLink.getHost().toLowerCase())) {
    fortsæt;
   }

   Spring de links over, der allerede er behandlet.
   hvis (crawledList.contains(link)) {
    fortsæt;
   }

   linkList.add (link);
  }

  returneren (linkList);
}

Søg i indholdet på en downloadet webside for at afgøre, om der er en specificeret søgestreng på siden

privat boolsk søgningStringMatches(StrengsideIndhold,
   String searchString, boolean caseSensitive) {
  String searchIndhold = sideIndhold;
  if (!caseSensitive) {// if case insensitive
   searchIndhold = pageContents.toLowerCase();
  }

  Pattern p = Pattern.compile("[\\s]+");
  String[]-termer = p.split(searchString);
  for (int i = 0; Jeg < termer.længde; i++) {
   hvis (caseSensitive) {
    hvis (searchContents.indexOf(terms) == -1) {
     return false;
    }
   } ellers {
    hvis (searchContents.indexOf(terms.toLowerCase()) == -1) {
     return false;
    }
   }
  }

  returner sand;
}

Udfør selve søgeoperationen
offentlig ArrayList<String> crawl(String startUrl, int maxUrls,
   String searchString, boolean limithost, boolean caseSensitive) {

  HashSet<String> crawledList = ny HashSet<String>();
  LinkedHashSet<String> toCrawlList = ny LinkedHashSet<String>();

  hvis (maxUrls < 1) {
   errorList.add ("Ugyldig Max URL-værdi.");
   System.out.println("Ugyldige maksimale URL'er.");
  }

  hvis (searchString.length() < 1) {
   errorList.add ("Manglende søgestreng.");
   System.out.println ("Manglende søgestreng");
  }

  hvis (errorList.size() > 0) {
   System.out.println("err!!");
   return errorList;
  }

  Flyt www ud af start-URL'en
  startUrl = fjernWwwFromUrl(startUrl);

  toCrawlList.add (startUrl);
  mens (toCrawlList.size() > 0) {

   hvis (maxUrls != -1) {
    hvis (crawledList.size() == maxUrls) {
     pause;
    }
   }

   Få URL nederst på listen.
   String url = toCrawlList.iterator().next();

   Fjern URL fra listen over crawl.
   toCrawlList.remove(url);

   Konverter streng-url til URL-objekt.
   URL verifiedUrl = verifyUrl(url);

   Spring URL'en over, hvis robotter ikke har tilladelse til den.
   hvis (!isRobotAllowed(verifiedUrl)) {
    fortsæt;
   }

   Tilføj behandlede URL'er til crawledList
   crawledList.add(url);
   Streng pageContents = downloadPage(verifiedUrl);

   hvis (pageContents != null && pageContents.length() > 0) {
    Få et gyldigt link fra siden
    ArrayList<String> links = henteLinks(verifiedUrl,
      pageContents, crawledList, limitHost);

    toCrawlList.addAll(links);

    hvis (searchStringMatches(pageContents, searchString,
      caseSensitive)) {
     result.add(url);
     System.out.println(url);
    }
   }

  }
  returneringsresultat;
}

Hovedfunktion
public static void main(String[] args) {
  SearchCrawler crawler = ny SearchCrawler ("http://www.itsvse.com/", 100,"Delver_Si");
  Thread search = ny tråd (crawler);
  System.out.println ("Start søgning...");
  System.out.println("result:");
  search.start();
  try {
   search.join();
  } catch (InterruptedException e) {
   TODO Automatisk genereret catch block
   e.printStackTrace();
  }
}
}
[/mw_shl_code]

1.png (100.02 KB, Antal downloads: 591)

2.png (72.18 KB, Antal downloads: 596)

3.png (188.46 KB, Antal downloads: 606)





Tidligere:PHP udgør 82,2% af de 100W største hjemmesider
Næste:Java Edition Web Source Code Viewer
Opslået på 30/11/2014 18.07.24 |
Da jeg så nyheden om, at Jack Ma stadig var 300 millioner fra at indhente Li Ka-shing og blive Asiens rigeste mand, grinede jeg inderst inde og tjekkede hurtigt min placering på internettet, som stort set ikke var påvirket, og placeringen forblev på omkring 1,4 milliarder, nu er jeg lettet! Faktisk er jeg også en person med drømme, siden jeg var barn, drømte jeg, at jeg en dag ville køre en Lamborghini sportsvogn tilbage til vores hjemby med solbriller, efter næsten 20 års hårdt arbejde, nu er drømmen halvt realiseret, jeg har allerede mine egne solbriller, kun en sportsvogn, drømmen er ved at blive til virkelighed, og jeg bliver lidt spændt, når jeg tænker på det!
 Udlejer| Opslået på 30/11/2014 18.28.24 |

En web crawler (også kendt som en web spider, en web bot, oftere kaldet en web chaser i FOAF-fællesskabet) er et program eller script, der automatisk skraber information om World Wide Web i henhold til bestemte regler. Andre mindre almindeligt anvendte navne er myrer, auto-indekser, emulatorer eller orme.
Opslået på 30/11/2014 17.40.16 |
Delver_Si Opslået den 30-11-2014 kl. 17:22
Jeg vil gerne skrive et værktøj, der kan eksplodere mssql ftp og andre værktøjer, men det er ikke nemt at bruge online

Skriv det, jeg har din ryg!  Nedrivningsværktøjer er generelt skrevet i .net, og der er ikke mange skrevet i Java, så du kan skrive et i Java!
Opslået på 30/11/2014 17.19.07 |
Jeg tørrer mig, det er en god dukke til at lave et hackingværktøj!
Opslået på 30/11/2014 17.22.22 |
Jeg samlede den først, selvom den nu er ubrugelig, tror jeg, den vil være nyttig i fremtiden!
 Udlejer| Opslået på 30/11/2014 17.22.42 |
Jeg vil gerne skrive et værktøj, der kan eksplodere mssql ftp og andre værktøjer, men det er ikke nemt at bruge online
Opslået på 30/11/2014 18.08.16 |
Hvad mener du, jeg forstår det ikke
 Udlejer| Opslået på 30/11/2014 18.32.40 |
admin postet den 30-11-2014 kl. 17:40
Skriv det, jeg har din ryg!  Nedrivningsværktøjer er generelt skrevet i .net, og der er ikke mange skrevet i Java, så du kan skrive et i Java!

MSSQL-blasteren i kittet kan ikke engang skyde min egen,
 Udlejer| Opslået på 30/11/2014 18.33.09 |
Test opslået den 30-11-2014 18:07
Da han så nyheden om, at Jack Ma stadig manglede 300 millioner for at indhente Li Ka-shing og blive Asiens rigeste mand, klikkede hans hjerte, og han tjekkede hurtigt sin placering på internettet, og han var stort set ikke påvirket...

Du er webmasterens vest, ikke?"
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com