Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 29455|Svare: 11

[Java kildekode] Java-versjonen av webcrawleren

[Kopier lenke]
Publisert på 30.11.2014 16:56:56 | | | |
[mw_shl_code=java,true]/**
* @author Jack.Wang
*
*/
importere java.io.BufferedReader;
importere java.io.InputStreamReader;
importere java.net.URL;
import java.util.ArrayList;
importere java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

Søk etter nettcrawlere
offentlig klasse SearchCrawler implementerer Runnable {

/*
  * disallowListCache cache robot tillater ikke søkte URL-er. Robot-protokollen setter en robots.txt-fil i rotkatalogen til nettstedet,
  * Spesifiserer hvilke sider på nettstedet som er søkbare for begrenset søk.
  * Søkeprogrammet bør hoppe over disse områdene under søket, her er et eksempel på robots.txt:
  * # robots.txt for http://somehost.com/ User-agent:
  * Ikke tillate: /cgi-bin/
  * Ikke tillatt: /registrering # Ikke tillatt roboter på registreringssiden
  * Ikke tillat: /login
  */

privat HashMap<String, ArrayList<String>> disallowListCache = ny HashMap<String, ArrayList<String>>();
ArrayList<String> errorList = ny ArrayList<String>(); Feilmelding
ArrayList-resultat<String> = ny ArrayList<String>(); Søkte resultater
String startUrl; Et utgangspunkt for å starte søket ditt
int maxUrl; Maksimalt antall prosesserte URL-er
String searchString; Strenger å søke etter
boolsk caseSensitive = falsk; Om man skal være case-sensitiv eller ikke
boolsk grenseVert = falsk; Om man skal søke innenfor en begrenset vert

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

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

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

Oppdag URL-formatering
privat 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 (Unntak e) {
   returner null;
  }
  returnerte verifiedUrl;
}

Oppdager om roboten gir tilgang til den gitte URL-en.
private boolean isRobotAllowed(URL urlToCheck) {
  String host = urlToCheck.getHost().toLowerCase(); Få verten som gir RUL
  System.out.println("host="+host);

  Få en cache med URL-er som verten din ikke tillater søk i
  ArrayList<String> disallowList = disallowListCache.get(host);

  Hvis du ikke allerede har en cache, last den ned 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()));

    Les robotfilen for å lage en liste over stier som ikke er tillatt å få tilgang til.
    Strenglinje;
    mens ((linje = reader.readLine()) != null) {
     hvis (line.indexOf("Disallow:") == 0) {// Inneholder den "Disallow:"
      Streng disallowPath = line.substring("Disallow:"
        .lengde()); Få veien for å nekte tilgang

      Sjekk etter merknader.
      int commentIndex = disallowPath.indexOf("#");
      hvis (commentIndex != -1) {
       disallowPath = disallowPath.substring(0,
         commentIndex); Fjern kommentaren
      }

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

    Cache-stier som denne verten ikke har tilgang til.
    disallowListCache.put(host, disallowList);
   } catch (Unntak e) {
    returner sann; Det finnes ingen robots.txt filer i rotkatalogen til nettstedet, og den returnerer true
   }
  }

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

  returner sann;
}

privat String downloadPage(URL pageUrl) {
  try {
   Åpne tilkobling til URL for lesing.
   BufferedReader reader = ny BufferedReader (ny InputStreamReader(
     pageUrl.openStream()));

   Les siden inn i bufferen.
   Strenglinje;
   StringBuffer pageBuffer = ny StringBuffer();
   mens ((linje = reader.readLine()) != null) {
    pageBuffer.append(linje);
   }

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

  returner null;
}

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

  return (URL);
}

Analyser siden og finn lenken
privat ArrayList<String> henteLenker(URL pageURL, streng sideinnhold,
   HashSet crawledList, boolean limitHost) {
  Kompil matchingsmønsteret til lenken med regulære uttrykk.
  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()) {
   Strenglenke = m.group(1).trim();

   hvis (link.length() < 1) {
    fortsett;
   }

   Hopp over lenken til denne siden.
   hvis (link.charAt(0) == '#') {
    fortsett;
   }

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

   hvis (link.toLowerCase().indexOf("javascript") != -1) {
    fortsett;
   }

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

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

   lenke = fjernWwwFromUrl(lenke);

   URL verifiedLink = verifyUrl(link);
   hvis (verifiedLink == null) {
    fortsett;
   }

   /* Hvis du begrenser verter, ekskluder de URL-ene som ikke oppfyller kriteriene */
   hvis (limitHost
     && !pageUrl.getHost().toLowerCase().equals(
       verifiedLink.getHost().toLowerCase())) {
    fortsett;
   }

   Hopp over de lenkene som allerede er behandlet.
   hvis (crawledList.contains(link)) {
    fortsett;
   }

   linkList.add (lenke);
  }

  returnere (linkList);
}

Søk i innholdet på en nedlastet nettside for å finne ut om det finnes en spesifisert søkestreng på siden

privat boolsk søkStringMatches(StrengsideInnhold,
   String searchString, boolean caseSensitive) {
  StrengsøkInnhold = sideInnhold;
  hvis (!caseSensitive) {// if case insensitive
   searchContents = pageContents.toLowerCase();
  }

  Mønster p = Pattern.compile("[\\s]+");
  String[]-termer = p.split(searchString);
  for (int i = 0; Jeg < term.lengde; i++) {
   hvis (caseSensitive) {
    hvis (searchContents.indexOf(terms) == -1) {
     returner falsk;
    }
   } ellers {
    hvis (searchContents.indexOf(terms.toLowerCase()) == -1) {
     returner falsk;
    }
   }
  }

  returner sann;
}

Utfør selve søkeoperasjonen
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 maks URL-verdi.");
   System.out.println ("Ugyldige maksimale URL-verdi.");
  }

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

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

  Flytt www ut av 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-en fra gjennomsøkingslisten.
   toCrawlList.remove(URL);

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

   Hopp over URL hvis roboter ikke har tilgang til den.
   hvis (!isRobotAllowed(verifiedUrl)) {
    fortsett;
   }

   Legg til behandlede URL-er i crawledList
   crawledList.add(url);
   Streng pageContents = downloadPage(verifiedUrl);

   hvis (pageContents != null && pageContents.length() > 0) {
    Få en gyldig lenke fra siden
    <String> ArrayList-lenker = henteLenker(verifiedUrl,
      pageContents, crawledList, limitHost);

    toCrawlList.addAll(lenker);

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

  }
  returresultat;
}

Hovedfunksjon
offentlig statisk void main(String[] args) {
  SearchCrawler crawler = ny SearchCrawler ("http://www.itsvse.com/", 100,"Delver_Si");
  Trådsøk = ny tråd (crawler);
  System.out.println ("Start søk...");
  System.out.println("result:");
  search.start();
  try {
   search.join();
  } catch (InterruptedException e) {
   TODO Automatisk generert fangstblokk
   e.printStackTrace();
  }
}
}
[/mw_shl_code]

1.png (100.02 KB, Antall nedlastinger: 591)

2.png (72.18 KB, Antall nedlastinger: 596)

3.png (188.46 KB, Antall nedlastinger: 606)





Foregående:PHP står for 82,2 % av de 100W største nettsidene
Neste:Java Edition Web Source Code Viewer
Publisert på 30.11.2014 18:07:24 |
Da jeg så nyheten om at Jack Ma fortsatt var 300 millioner unna å ta igjen Li Ka-shing for å bli den rikeste mannen i Asia, lo jeg for meg selv og sjekket raskt rangeringen min på Internett, som i praksis ikke var påvirket, og rangeringen holdt seg på rundt 1,4 milliarder, nå er jeg lettet! Faktisk er jeg også en person med drømmer, siden jeg var barn, drømte jeg at jeg en dag skulle kjøre en Lamborghini sportsbil tilbake til hjembyen vår med solbriller, etter nesten 20 år med hardt arbeid, nå er drømmen halvveis oppfylt, jeg har allerede mine egne solbriller, bare en sportsbil, drømmen er i ferd med å bli virkelighet, og jeg blir litt spent når jeg tenker på det!
 Vert| Publisert på 30.11.2014 18:28:24 |

En webcrawler (også kjent som en webspinn, en webbot, oftere kalt en webjeger i FOAF-miljøet) er et program eller skript som automatisk skraper informasjon om World Wide Web i henhold til visse regler. Andre mindre brukte navn er maur, auto-indekser, emulatorer eller ormer.
Publisert på 30.11.2014 17:40:16 |
Delver_Si Publisert 30.11.2014 kl. 17:22
Jeg ønsker å lage et verktøy som sprenger MSSQL FTP og andre verktøy, men det er ikke lett å bruke på nettet

Skriv det, jeg har ryggen din!  Rivningsverktøy er vanligvis skrevet i .net, og det finnes ikke mange i Java, så du kan skrive ett i Java!
Publisert på 30.11.2014 17:19:07 |
Jeg tørker, dette er en god dukke for å lage et hackingverktøy!
Publisert på 30.11.2014 17:22:22 |
Jeg samlet den først, selv om den er ubrukelig nå, tror jeg den vil være nyttig i fremtiden!
 Vert| Publisert på 30.11.2014 17:22:42 |
Jeg ønsker å lage et verktøy som sprenger MSSQL FTP og andre verktøy, men det er ikke lett å bruke på nettet
Publisert på 30.11.2014 18:08:16 |
Hva mener du, jeg forstår ikke
 Vert| Publisert på 30.11.2014 18:32:40 |
Admin publisert 30.11.2014 17:40
Skriv det, jeg har ryggen din!  Rivningsverktøy er vanligvis skrevet i .net, og det finnes ikke mange i Java, så du kan skrive ett i Java!

MSSQL-blasteren i settet kan ikke engang skyte min egen,
 Vert| Publisert på 30.11.2014 18:33:09 |
Test publisert 30.11.2014 18:07
Da han så nyheten om at Jack Ma fortsatt manglet 300 millioner for å ta igjen Li Ka-shing for å bli den rikeste mannen i Asia, slo hjertet hans på plass, og han sjekket raskt rangeringen sin på Internett, og han ble i praksis ikke påvirket...

Du er webmasterens vest, ikke sant?"
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com