Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 29455|Odpoveď: 11

[Java zdrojový kód] Java verzia webového prehľadávača

[Kopírovať odkaz]
Zverejnené 30. 11. 2014 16:56:56 | | | |
[mw_shl_code=java,true]/**
* @author Jack.Wang
*
*/
import java.io.BufferedReader;
import java.io.InputStreamReader;
import 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;

Vyhľadávanie webových prehľadávačov
public class SearchCrawler implements Runnable {

/*
  * disallowListCache cache robot neumožňuje vyhľadávanie v URL adresách. Protokol Robot umiestňuje robots.txt súbor do koreňového adresára webovej stránky,
  * Špecifikuje, ktoré stránky na stránke sú vyhľadávateľné pre obmedzené vyhľadávanie.
  * Vyhľadávací program by mal tieto oblasti počas vyhľadávania preskočiť, tu je príklad robots.txt:
  * # robots.txt pre http://somehost.com/ User-agent:
  * Disallow: /cgi-bin/
  * Zakaz: /registrácia # Zakaz robotov na registračnej stránke
  * Disallow: /login
  */

private HashMap<String, ArrayList<String>> disallowListCache = nový HashMap<String, ArrayList<String>>();
ArrayList<String> errorList = nový ArrayList<String>(); Chybová správa
Výsledok ArrayList<String> = nový ArrayList<String>(); Vyhľadávané výsledky
String startUrl; Východiskový bod na začatie vášho hľadania
int maxUrl; Maximálny počet spracovaných URL
String searchString; Reťazce na vyhľadávanie
booleovský caseSensitive = nepravda; Či by ste mali byť citliví na veľké a malé písmená
booleovský limitHostiteľ = nepravda; Či hľadať v rámci obmedzeného hostiteľa

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

public ArrayList<String> getResult() {
  vrátiť výsledok;
}

public void run() { // Spustiť vyhľadávacie vlákno
  crawl(startUrl, maxUrl, searchString, limitHost, caseSensitive);
}

Detekcia formátovania URL
private URL verifyUrl(String url) {
  Spracovávajú sa iba HTTP URL.
  if (!url.toLowerCase().startsWith("http://"))
   return null;
  URL verifiedUrl = null;
  try {
   verifiedUrl = nová URL(url);
  } catch (Výnimka e) {
   return null;
  }
  return overifiedUrl;
}

Detekuje, či robot umožňuje prístup k danej URL.
private boolean isRobotAllowed(URL urlToCheck) {
  String host = urlToCheck.getHost().toLowerCase(); Získaj hostiteľa, ktorý dáva RUL
  System.out.println("host="+host);

  Získajte cache URL, ktoré váš hosting neumožňuje vyhľadávať
  ArrayList<String> disallowList = disallowListCache.get(host);

  Ak ešte nemáte cache, stiahnite si ju a uložte do cache.
  if (disallowList == null) {
   disallowList = nový ArrayList<String>();
   try {
    URL robotsFileUrl = nová URL ("http://" + host + "/robots.txt");
    BufferedReader = nový BufferedReader(
      nový InputStreamReader(robotsFileUrl.openStream()));

    Prečítajte si robotický súbor, aby ste vytvorili zoznam ciest, ku ktorým nie je možné pristupovať.
    Strunová linka;
    while ((line = reader.readLine()) != null) {
     ak (line.indexOf("Disallow:") == 0) {// Obsahuje "Disallow:"
      String disallowPath = line.substring("Disallow:"
        .length()); Získajte cestu k zakázanému prístupu

      Skontrolujte poznámky.
      int commentIndex = disallowPath.indexOf("#");
      ak (commentIndex != -1) {
       disallowPath = disallowPath.substring(0,
         commentIndex); Odstrániť komentár
      }

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

    Cache cesty, ku ktorým tento hostiteľ nemá prístup.
    disallowListCache.put(hostiteľ, disallowList);
   } catch (Výnimka e) {
    return true; V koreňovom adresári webu nie sú žiadne robots.txt súbory a vracia true
   }
  }

  String file = urlToCheck.getFile();
  System.out.println("File getFile()="+file);
  pre (int i = 0; i < disallowList.size(); i++) {
   String disallow = disallowList.get(i);
   if (file.startsWith(disallow)) {
    return false;
   }
  }

  return true;
}

private String downloadPage(URL pageUrl) {
  try {
   Otvorte prepojenie na URL na čítanie.
   BufferedReader reader = nový BufferedReader(nový InputStreamReader(
     pageUrl.openStream()));

   Čítaj stránku do bufferu.
   Strunová linka;
   StringBuffer pageBuffer = nový StringBuffer();
   while ((line = reader.readLine()) != null) {
    pageBuffer.append(line);
   }

   return pageBuffer.toString();
  } catch (Výnimka e) {
  }

  return null;
}

Odstráňte "www" z URL adresy
private String removeWwwFromUrl(String url) {
  int index = url.indexOf("://www.");
  ak (index != -1) {
   return url.substring(0, index + 3) + url.substring(index + 7);
  }

  return (url);
}

Analyzuj stránku a nájdi odkaz
private ArrayList<String> retrieveLinks(URL pageUrl, String pageContents,
   HashSet crawledList, boolean limitHost) {
  Skompilujte zodpovedajúci vzor spojenia s regulárnymi výrazmi.
  Pattern p = Pattern.compile("<a\\s+href\\s*=\\s*"?(. *?) [\"|>]",
    Pattern.CASE_INSENSITIVE);
  Matcher m = p.matcher(pageContents);

  ArrayList<String> linkList = nový ArrayList<String>();
  zatiaľ čo (m.find()) {
   String link = m.group(1).trim();

   ak (link.length() < 1) {
    pokračovať;
   }

   Preskočte odkaz na túto stránku.
   if (link.charAt(0) == '#') {
    pokračovať;
   }

   if (link.indexOf("mailto:") != -1) {
    pokračovať;
   }

   if (link.toLowerCase().indexOf("javascript") != -1) {
    pokračovať;
   }

   ak (link.indexOf("://") == -1) {
    ak (link.charAt(0) == '/') {// spracováva absolútne
     link = "http://" + pageUrl.getHost() + ":"
       + pageUrl.getPort() + link;
    } inak {
     String file = pageUrl.getFile();
     ak (file.indexOf('/') == -1) {// spracováva relatívne adresy
      link = "http://" + pageUrl.getHost() + ":"
        + pageUrl.getPort() + "/" + link;
     } inak {
      Cesta reťazca = file.substring(0,
        file.lastIndexOf('/') + 1);
      link = "http://" + pageUrl.getHost() + ":"
        + pageUrl.getPort() + path + link;
     }
    }
   }

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

   link = removeWwwFromUrl(link);

   URL verifiedLink = verifyUrl(link);
   ak (verifiedLink == null) {
    pokračovať;
   }

   /* Ak obmedzíte hosty, vynechajte tie URL, ktoré nespĺňajú kritériá */
   ak (limitHost
     && !pageUrl.getHost().toLowerCase().equals(
       verifiedLink.getHost().toLowerCase())) {
    pokračovať;
   }

   Preskočte tie odkazy, ktoré už boli spracované.
   if (crawledList.contains(link)) {
    pokračovať;
   }

   linkList.add(link);
  }

  return (linkList);
}

Prehľadajte obsah stiahnutej webovej stránky, aby ste zistili, či sa na stránke nachádza špecifikovaný vyhľadávací reťazec

súkromné boolean searchStringMatches(String pageContents,
   String searchString, boolean caseSensitive) {
  Vyhľadávanie reťazcaObsah = stránkaObsah;
  if (!caseSensitive) {// if caseSensitive)
   searchContents = pageContents.toLowerCase();
  }

  Pattern p = Pattern.compile("[\\s]+");
  String[] terms = p.split(searchString);
  pre (int i = 0; I < terms.length; i++) {
   ak (caseSensitive) {
    if (searchContents.indexOf(terms)) == -1) {
     return false;
    }
   } inak {
    if (searchContents.indexOf(terms).toLowerCase()) == -1) {
     return false;
    }
   }
  }

  return true;
}

Vykonajte skutočnú vyhľadávaciu operáciu
public<String> ArrayList crawl(String startUrl, int maxUrls,
   String searchString, boolean limithost, boolean caseSensitive) {

  HashSet<String> crawledList = nový HashSet<String>();
  LinkedHashSet<String> toCrawlList = nový LinkedHashSet<String>();

  if (maxUrls < 1) {
   errorList.add("Hodnota neplatných maximálnych URL.");
   System.out.println("Hodnota neplatných maximálnych URL.");
  }

  ak (searchString.length() < 1) {
   errorList.add("Chýbajúci vyhľadávací reťazec.");
   System.out.println("Chýbajúci vyhľadávací reťazec");
  }

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

  Presuňte www z úvodnej URL
  startUrl = removeWwwFromUrl(startUrl);

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

   if (maxUrls != -1) {
    if (crawledList.size() == maxUrls) {
     prestávka;
    }
   }

   URL nájdete na spodku zoznamu.
   String url = toCrawlList.iterator().next();

   Odstráňte URL zo zoznamu na prehľadávanie.
   toCrawlList.remove(url);

   Preveďte URL reťazca na URL objekt.
   URL verifiedUrl = verifyUrl(url);

   Preskočite URL, ak roboty nemajú prístup k nej.
   if (!isRobotAllowed(verifiedUrl)) {
    pokračovať;
   }

   Pridajte spracované URL do crawledList
   crawledList.add(url);
   String pageContents = downloadPage(verifiedUrl);

   if (pageContents != null & pageContents.length() > 0) {
    Získajte platný odkaz zo stránky
    <String> ArrayList links = retrieveLinks(verifiedUrl,
      stránkContents, crawledList, limitHost);

    toCrawlList.addAll(links);

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

  }
  vrátiť výsledok;
}

Hlavná funkcia
public static void main(String[] args) {
  SearchCrawler crawler = nový SearchCrawler ("http://www.itsvse.com/", 100,"Delver_Si");
  Vyhľadávanie vlákien = nové vlákno (crawler);
  System.out.println("Začni hľadať...");
  System.out.println("výsledok:");
  search.start();
  try {
   search.join();
  } catch (InterruptedException e) {
   TODO Automaticky generovaný záchytný blok
   e.printStackTrace();
  }
}
}
[/mw_shl_code]

1.png (100.02 KB, Počet stiahnutí: 591)

2.png (72.18 KB, Počet stiahnutí: 596)

3.png (188.46 KB, Počet stiahnutí: 606)





Predchádzajúci:PHP tvorí 82,2 % z top 100W webových stránok
Budúci:Java Edition Web Source Code Viewer
Zverejnené 30. 11. 2014 18:07:24 |
Keď som videl správu, že Jack Ma je stále 300 miliónov od toho, aby dobehol Li Ka-shinga a stal sa najbohatším mužom v Ázii, zasmial som sa v srdci a rýchlo som skontroloval svoje hodnotenie na internete, ktoré nebolo v podstate ovplyvnené, a rebríček zostal asi na 1,4 miliardy, teraz som uľavený! V skutočnosti som tiež človek so snami, už od detstva som sníval, že raz pôjdem Lamborghini športovým autom späť do nášho rodného mesta so slnečnými okuliarmi, po takmer 20 rokoch tvrdej práce je teraz ten sen napoly splnený, už mám vlastné slnečné okuliare, len športové auto, sen sa chystá stať skutočnosťou a som trochu nadšený, keď na to myslím!
 Prenajímateľ| Zverejnené 30. 11. 2014 18:28:24 |

Webový prehľadávač (známy aj ako webový pavúk, webbot, v komunite FOAF častejšie nazývaný web chaser) je program alebo skript, ktorý automaticky sťahuje informácie o World Wide Web podľa určitých pravidiel. Medzi menej používané názvy patria mravce, automatické indexy, emulátory alebo červy.
Zverejnené 30. 11. 2014 17:40:16 |
Delver_Si Zverejnené 30.11.2014 o 17:22
Chcem napísať nástroj, ktorý by explodoval mssql ftp a ďalšie nástroje, ale nie je jednoduché ho používať online

Napíš to, kryjem ti chrbát!  Nástroje na demoláciu sú väčšinou písané v .net a veľa ich nie je napísaných v Jave, takže jeden môžete napísať aj v Jave!
Zverejnené 30. 11. 2014 17:19:07 |
Utieram, toto je dobrá bábka na výrobu hackovacieho nástroja!
Zverejnené 30. 11. 2014 17:22:22 |
Najprv som ho nazbieral, hoci je teraz zbytočný, verím, že sa mi v budúcnosti zíde!
 Prenajímateľ| Zverejnené 30. 11. 2014 17:22:42 |
Chcem napísať nástroj, ktorý by explodoval mssql ftp a ďalšie nástroje, ale nie je jednoduché ho používať online
Zverejnené 30. 11. 2014 18:08:16 |
Čo tým myslíš, že nerozumiem
 Prenajímateľ| Zverejnené 30. 11. 2014 18:32:40 |
admin zverejnené 30.11.2014 o 17:40
Napíš to, kryjem ti chrbát!  Nástroje na demoláciu sú väčšinou písané v .net a veľa ich nie je napísaných v Jave, takže jeden môžete napísať aj v Jave!

MSSQL blaster v sade ani nedokáže vystreliť môj vlastný,
 Prenajímateľ| Zverejnené 30. 11. 2014 18:33:09 |
Test zverejnený 30. 11. 2014 o 18:07
Keď videl správu, že Jack Ma stále chýba o 300 miliónov na to, aby dobehol Li Ka-shinga a stal sa najbohatším mužom v Ázii, srdce mu cvaklo, rýchlo si skontroloval poradie na internete a v podstate ho to neovplyvnilo...

Si vesta webmastera, však?"
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com