Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 29455|Atsakyti: 11

[Java šaltinio kodas] Java žiniatinklio naršyklės versija

[Kopijuoti nuorodą]
Paskelbta 2014-11-30 16:56:56 | | | |
[mw_shl_code=java,true]/**
* @author Jack.Wang
*
*/
importuoti java.io.BufferedReader;
importuoti java.io.InputStreamReader;
importuoti java.net.URL;
importuoti java.util.ArrayList;
importuoti java.util.HashMap;
importuoti java.util.HashSet;
importuoti java.util.LinkedHashSet;
importuoti java.util.regex.Matcher;
importuoti java.util.regex.Pattern;

Žiniatinklio naršyklių paieška
viešoji klasė SearchCrawler įgyvendina Runnable {

/*
  * disallowListCache talpyklos robotas neleidžia ieškoti URL. Roboto protokolas nustato robots.txt failą šakniniame svetainės kataloge,
  * Nurodo, kuriuose svetainės puslapiuose galima ieškoti ribotos paieškos.
  * Paieškos programa turėtų praleisti šias sritis paieškos metu, čia yra robots.txt pavyzdys:
  * # robots.txt http://somehost.com/ User-agent:
  * Neleisti: /cgi-bin/
  * Neleisti: /registration # Neleisti robotų registracijos puslapyje
  * Neleisti: /login
  */

privatus HashMap<String, ArrayList<String>> disallowListCache = naujas HashMap<String, ArrayList<String>>();
ArrayList<String> errorList = naujas ArrayList<String>(); Klaidos pranešimas
ArrayList<String> rezultatas = naujas ArrayList<String>(); Ieškomi rezultatai
Eilutės startUrl; Atspirties taškas ieškai pradėti
int maxUrl; Maksimalus apdorotų URL skaičius
Eilutė searchString; Eilutės, kurių reikia ieškoti
loginis caseSensitive = klaidingas; Ar turi būti skiriamos didžiosios ir mažosios raidės
loginis limitasHost = klaidingas; Ar ieškoti apribotame pagrindiniame kompiuteryje

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

public ArrayList<String> getResult() {
  grąžinti rezultatą;
}

public void run() { // Pradėti ieškos giją.
  crawl(startUrl, maxUrl, searchString, limitHost, caseSensitive);
}

URL formatavimo aptikimas
privatus URL verifyUrl(String url) {
  Apdorojami tik HTTP URL.
  if (!url.toLowerCase().startsWith("http://"))
   grąžinti null;
  URL verifiedUrl = null;
  pabandykite {
   verifiedUrl = naujas URL(url);
  } laimikis (e išimtis) {
   grąžinti null;
  }
  grąžinti verifiedUrl;
}

Aptinka, ar robotas leidžia pasiekti nurodytą URL.
privatus loginis isRobotAllowed(URL urlToCheck) {
  Eilutės pagrindinis kompiuteris = urlToCheck.getHost().toLowerCase(); Gaukite šeimininką, kuris suteikia RUL
  System.out.println("host="+host);

  Gaukite URL talpyklą, kurios pagrindinis kompiuteris neleidžia ieškoti
  ArrayList<String> disallowList = disallowListCache.get(host);

  Jei dar neturite talpyklos, atsisiųskite ir išsaugokite ją talpykloje.
  if (disallowList == null) {
   disallowList = naujas ArrayList<String>();
   pabandykite {
    URL robotsFileUrl = naujas URL("http://" + pagrindinis kompiuteris + "/robots.txt");
    BufferedReader skaitytuvas = naujas BufferedReader(
      naujas InputStreamReader(robotsFileUrl.openStream()));

    Perskaitykite roboto failą, kad sukurtumėte kelių, kurių neleidžiama pasiekti, sąrašą.
    Stygų linija;
    o ((eilutė = skaitytojas.readLine()) != nulinis) {
     if (line.indexOf("Neleisti:") == 0) {// Ar jame yra "Neleisti:"
      Eilutė disallowPath = line.substring("Neleisti:"
        .length()); Neleistinos prieigos kelio gavimas

      Patikrinkite, ar yra komentarų.
      int commentIndex = disallowPath.indexOf("#");
      if (commentIndex != -1) {
       disallowPath = disallowPath.substring(0,
         commentIndex); Pašalinkite komentarą
      }

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

    Talpyklos keliai, kurių šiam pagrindiniam kompiuteriui neleidžiama pasiekti.
    disallowListCache.put(host, disallowList);
   } laimikis (e išimtis) {
    grąžinti tiesa; Šakniniame svetainės kataloge nėra robots.txt failų, ir jis grąžina teisingą
   }
  }

  Eilutės failas = urlToCheck.getFile();
  System.out.println("Failas getFile()="+failas);
  for (int i = 0; i < disallowList.size(); i++) {
   Eilutė neleisti = disallowList.get(i);
   if (failas.startsWith(neleisti)) {
    grąžinti klaidingą;
   }
  }

  grąžinti tiesa;
}

private String downloadPage(URL pageUrl) {
  pabandykite {
   Atidarykite ryšį su URL skaitymui.
   BufferedReader skaitytuvas = naujas BufferedReader(naujas InputStreamReader(
     pageUrl.openStream()));

   Skaityti puslapį į buferį.
   Stygų linija;
   StringBuffer pageBuffer = naujas StringBuffer();
   o ((eilutė = skaitytojas.readLine()) != nulinis) {
    pageBuffer.append(eilutė);
   }

   grąžinti pageBuffer.toString();
  } laimikis (e išimtis) {
  }

  grąžinti null;
}

Pašalinkite "www" iš URL
private String removeWwwFromUrl(String url) {
  int index = url.indexOf("://www.");
  if (indeksas != -1) {
   grąžinti url.substring(0, index + 3) + url.substring(index + 7);
  }

  grąžinimas (URL);
}

Išanalizuokite puslapį ir raskite saitą
privatus ArrayList<String> retrieveLinks(URL pageUrl, String pageContents,
   HashSet crawledList, loginis limitasHost) {
  Sudarykite saito atitikimo modelį su reguliariaisiais reiškiniais.
  Pattern p = Pattern.compile("<a\\s+href\\s*=\\s*\"?(. *?) [\"|>]",
    Pattern.CASE_INSENSITIVE);
  Matcher m = p.matcher(pageContents);

  ArrayList<String> linkList = naujas ArrayList<String>();
  o (m.find()) {
   Eilutės nuoroda = m.group(1).trim();

   if (link.length() < 1) {
    tęsti;
   }

   Praleiskite nuorodą į šį puslapį.
   if (link.charAt(0) == '#') {
    tęsti;
   }

   if (link.indexOf("mailto:") != -1) {
    tęsti;
   }

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

   if (link.indexOf("://") == -1) {
    if (link.charAt(0) == '/') {// tvarko absoliučiai
     link = "http://" + pageUrl.getHost() + ":"
       + pageUrl.getPort() + nuoroda;
    } else {
     Eilutės failas = pageUrl.getFile();
     if (file.indexOf('/') == -1) {// apdoroja santykinius adresus
      link = "http://" + pageUrl.getHost() + ":"
        + pageUrl.getPort() + "/" + nuoroda;
     } else {
      Eilutės kelias = failas.subeilutė(0,
        failas.lastIndexOf('/') + 1);
      link = "http://" + pageUrl.getHost() + ":"
        + pageUrl.getPort() + kelias + nuoroda;
     }
    }
   }

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

   link = removeWwwFromUrl(nuoroda);

   URL verifiedLink = verifyUrl(nuoroda);
   if (verifiedLink == null) {
    tęsti;
   }

   /* Jei apribosite pagrindinius kompiuterius, išskirkite tuos URL, kurie neatitinka kriterijų */
   if (limitHost
     && !pageUrl.getHost().toLowerCase().equals(
       verifiedLink.getHost().toLowerCase())) {
    tęsti;
   }

   Praleiskite tas nuorodas, kurios jau buvo apdorotos.
   if (crawledList.contains(nuoroda)) {
    tęsti;
   }

   linkList.add(nuoroda);
  }

  grįžti (linkList);
}

Ieškokite atsisiųsto tinklalapio turinio, kad nustatytumėte, ar puslapyje yra nurodyta paieškos eilutė

privati Bulio logika searchStringMatches(String pageContents,
   String searchString, loginis caseSensitive) {
  String searchContents = pageContents;
  if (!caseSensitive) {// jei didžiosios ir mažosios raidės neskiria
   searchContents = pageContents.toLowerCase();
  }

  Pattern p = Pattern.compile("[\\s]+");
  String[] terms = p.split(searchString);
  for (int i = 0; i < terminai.ilgis; i++) {
   if (didžiosios ir mažosios raidės) {
    if (searchContents.indexOf(terminai) == -1) {
     grąžinti klaidingą;
    }
   } else {
    if (searchContents.indexOf(terminai.toLowerCase()) == -1) {
     grąžinti klaidingą;
    }
   }
  }

  grąžinti tiesa;
}

Atlikite tikrąją paieškos operaciją
public ArrayList<String> crawl(String startUrl, int maxUrls,
   String searchString, boolean limithost, boolean caseSensitive) {

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

  if (maxUrls < 1) {
   errorList.add("Neleistina maksimali URL reikšmė.");
   System.out.println("Neleistina maksimali URL reikšmė.");
  }

  if (searchString.length() < 1) {
   errorList.add("Trūksta paieškos eilutės.");
   System.out.println("Trūksta paieškos eilutė");
  }

  if (errorList.size() > 0) {
   System.out.println("klaida!!");
   grąžinti klaidąSąrašas;
  }

  Perkelti www iš pradžios URL
  startUrl = removeWwwFromUrl(startUrl);

  įCrawlList.add(startUrl);
  o (toCrawlList.size() > 0) {

   if (maxUrls != -1) {
    if (crawledList.size() == maxUrls) {
     pertrauka;
    }
   }

   Gaukite URL sąrašo apačioje.
   Eilutės URL = toCrawlList.iterator().next();

   Pašalinti URL iš aptikimo sąrašo.
   įCrawlList.remove(url);

   Konvertuoti eilutės URL į URL objektą.
   URL verifiedUrl = verifyUrl(url);

   Praleiskite URL, jei robotams neleidžiama jo pasiekti.
   if (!isRobotAllowed(verifiedUrl)) {
    tęsti;
   }

   Apdorotų URL įtraukimas į aptiktą sąrašą
   crawledList.add(url);
   String pageContents = downloadPage(verifiedUrl);

   if (pageContents != null && pageContents.length() > 0) {
    Gaukite galiojančią nuorodą iš puslapio
    ArrayList<String> nuorodos = retrieveLinks(verifiedUrl,
      pageContents, crawledList, limitHost);

    įCrawlList.addAll(nuorodos);

    if (searchStringMatches(pageContents, searchString,
      didžiosios ir mažosios raidės)) {
     result.add(url);
     System.out.println(url);
    }
   }

  }
  grąžinti rezultatą;
}

Pagrindinė funkcija
public static void main(String[] args) {
  SearchCrawler tikrintuvas = naujas SearchCrawler ("http://www.itsvse.com/", 100,"Delver_Si");
  Thread search = new Thread(crawler);
  System.out.println("Pradėti paiešką...");
  System.out.println("rezultatas:");
  paieška.pradžia();
  pabandykite {
   ieškoti.prisijungti();
  } catch (InterruptedException e) {
   TODO Automatiškai sugeneruotas gaudymo blokas
   e.printStackTrace();
  }
}
}
[/mw_shl_code]

1.png (100.02 KB, Atsisiuntimų skaičius: 591)

2.png (72.18 KB, Atsisiuntimų skaičius: 596)

3.png (188.46 KB, Atsisiuntimų skaičius: 606)





Ankstesnis:PHP sudaro 82,2 % geriausių 100 W svetainių
Kitą:"Java Edition" žiniatinklio šaltinio kodo peržiūros programa
Paskelbta 2014-11-30 18:07:24 |
Pamatęs žinią, kad Džekas Ma vis dar buvo 300 milijonų nuo Li Ka-shingo pasivyti ir tapti turtingiausiu Azijos žmogumi, nusijuokiau širdyje ir greitai patikrinau savo reitingą internete, kuris iš esmės nebuvo paveiktas, o reitingas išliko apie 1,4 milijardo, dabar man palengvėjo! Tiesą sakant, aš taip pat esu svajonių žmogus, nuo vaikystės svajojau, kad vieną dieną su akiniais nuo saulės parvešiu "Lamborghini" sportiniu automobiliu grįšiu į gimtąjį miestą, po beveik 20 metų sunkaus darbo, dabar svajonė pusiau išsipildžiusi, jau turiu savo akinius nuo saulės, tik sportinį automobilį, svajonė netrukus taps realybe, ir aš šiek tiek džiaugiuosi, kai apie tai pagalvoju!
 Savininkas| Paskelbta 2014-11-30 18:28:24 |

Žiniatinklio naršyklė (taip pat žinoma kaip žiniatinklio voras, žiniatinklio robotas, FOAF bendruomenėje dažniau vadinamas žiniatinklio persekiotoju) yra programa arba scenarijus, kuris automatiškai nuskaito informaciją apie žiniatinklį pagal tam tikras taisykles. Kiti rečiau naudojami pavadinimai yra skruzdėlės, automatiniai indeksai, emuliatoriai ar kirminai.
Paskelbta 2014-11-30 17:40:16 |
Delver_Si Publikuota: 2014-11-30 17:22
Noriu parašyti įrankį sprogdinti mssql ftp ir kitus įrankius, bet tai nėra lengva naudoti internete

Parašyk, aš tau padėsiu!  Griovimo įrankiai paprastai parašyti .net, o "Java" nėra daug, todėl galite parašyti vieną "Java"!
Paskelbta 2014-11-30 17:19:07 |
Aš nuvalyti, tai yra gera marionetė įsilaužimo įrankis!
Paskelbta 2014-11-30 17:22:22 |
Aš jį surinkau pirmas, nors dabar jis nenaudingas, tikiu, kad jis bus naudingas ateityje!
 Savininkas| Paskelbta 2014-11-30 17:22:42 |
Noriu parašyti įrankį sprogdinti mssql ftp ir kitus įrankius, bet tai nėra lengva naudoti internete
Paskelbta 2014-11-30 18:08:16 |
Ką turi omenyje, aš nesuprantu
 Savininkas| Paskelbta 2014-11-30 18:32:40 |
admin Publikuota 2014-11-30 17:40
Parašyk, aš tau padėsiu!  Griovimo įrankiai paprastai parašyti .net, o "Java" nėra daug, todėl galite parašyti vieną "Java"!

Rinkinyje esantis mssql blasteris net negali sprogdinti mano,
 Savininkas| Paskelbta 2014-11-30 18:33:09 |
Test Publikuota 2014-11-30 18:07
Pamatęs žinią, kad Džekui Ma vis dar pritrūko 300 milijonų, kad pasivytų Li Ka-shingą ir taptų turtingiausiu Azijos žmogumi, jo širdis spragtelėjo, ir jis greitai patikrino savo reitingą internete, ir jis iš esmės nebuvo paveiktas...

Tu esi žiniatinklio valdytojo liemenė, ar ne?"
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com