Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 29455|Vastaus: 11

[Java-lähdekoodi] Java-versio web-crawlerista

[Kopioi linkki]
Julkaistu 30.11.2014 16.56.56 | | | |
[mw_shl_code=java,totta]/**
* @author Jack.Wang
*
*/
tuo java.io.BufferedReader;
tuo java.io.InputStreamReader;
tuo java.net.URL;
tuo java.util.ArrayList;
tuo java.util.HashMap;
tuo java.util.HashSet;
tuo java.util.LinkedHashSet;
tuo java.util.regex.Matcher;
tuo java.util.regex.Pattern;

Haku web-indeksoijille
public class SearchCrawler toteuttaa Runnable {

/*
  * disallowListCache-välimuistirobotti ei salli haettuja URL-osoitteita. Robot-protokolla asettaa robots.txt-tiedoston verkkosivuston juurihakemistoon,
  * Määrittelee, mitkä sivut sivustolla ovat haettavissa rajoitetussa haussa.
  * Hakuohjelman tulisi ohittaa nämä alueet haun aikana, tässä on esimerkki robots.txt:
  * # robots.txt http://somehost.com/ käyttäjä-agentille:
  * Kielto: /cgi-bin/
  * Kieltä: /rekisteröinti # Kielto robotit rekisteröintisivulla
  * Estä: /kirjautuminen
  */

private HashMap<String, <String>ArrayList> disallowListCache = uusi HashMap<String, ArrayList<String>>();
ArrayList<String> errorList = uusi ArrayList<String>(); Virheilmoitus
<String> ArrayList-tulos = uusi ArrayList<String>(); Haetut tulokset
String startUrl; Lähtökohta etsinnän aloittamiseen
int maxUrl; Suurin käsiteltyjen URL-osoitteiden määrä
MerkkijonohakuString; Merkkijonot, joita haetaan
boolean caseSensitive = epätosi; Pitäisikö kirjainkoon sensitiivistä olla vai ei
boolean limitHost = epätosi; Kannattaako hakea rajoitetun isännän sisällä

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

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

public void run() { // Aloita hakuketju
  crawl(startUrl, maxUrl, searchString, limitHost, caseSensitive);
}

Tunnista URL-muotoilu
private URL verifyUrl(String url) {
  Vain HTTP-URL-osoitteet käsitellään.
  if (!url.toLowerCase().startsWith("http://"))
   return null;
  URL verifiedUrl = null;
  kokeile {
   verifiedUrl = uusi URL(url);
  } catch (Poikkeus e) {
   return null;
  }
  return verifiedUrl;
}

Tunnistaa, salliiko robotti pääsyn annettuun URL-osoitteeseen.
private boolean isRobotAllowed(URL urlToCheck) {
  String host = urlToCheck.getHost().toLowerCase(); Hanki isäntä, joka antaa RUL:n
  System.out.println("host="+host);

  Hanki välimuisti URL-osoitteita, joita isäntäsi ei salli hakea
  ArrayList<String> disallowList = disallowListCache.get(isäntä);

  Jos sinulla ei vielä ole välimuistia, lataa ja tallenna se.
  if (disallowList == null) {
   disallowList = uusi ArrayList<String>();
   kokeile {
    URL robotsFileUrl = new URL("http://" + host + "/robots.txt");
    BufferedReader = uusi BufferedReader(
      new InputStreamReader(robotsFileUrl.openStream()));

    Lue robottitiedosto luodaksesi listan poluista, joita ei saa käyttää.
    Jousilinja;
    kun ((rivi = reader.readLine()) != null) {
     if (line.indexOf("Disallow:") == 0) {// Sisältääkö se "Disallow:"
      String disallowPath = line.substring("Disallow:"
        .length()); Hanki reitti kiellettyyn pääsyyn

      Tarkista merkinnät.
      int commentIndex = disallowPath.indexOf("#");
      if (commentIndex != -1) {
       disallowPath = disallowPath.substring(0,
         commentIndex); Poista kommentti
      }

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

    Välimuistipolut, joihin tämä isäntä ei saa käyttää.
    disallowListCache.put(isäntä, disallowList);
   } catch (Poikkeus e) {
    return true; Sivuston juurihakemistossa ei ole robots.txt tiedostoja, ja se palauttaa true
   }
  }

  Merkkijonotiedosto = urlToCheck.getFile();
  System.out.println("Tiedosto getFile()="+file);
  kun (int i = 0; i < disallowList.size(); i++) {
   Merkkijono disallow = disallowList.get(i);
   if (file.startsWith(disallow)) {
    palauta väärin;
   }
  }

  return true;
}

private String downloadPage(URL pageUrl) {
  kokeile {
   Avaa yhteys URL-osoitteeseen lukemista varten.
   BufferedReader = uusi BufferedReader(uusi InputStreamReader(
     pageUrl.openStream()));

   Lue sivu puskuriin.
   Jousilinja;
   StringBuffer pageBuffer = uusi StringBuffer();
   kun ((rivi = reader.readLine()) != null) {
    pageBuffer.append(rivi);
   }

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

  return null;
}

Poista "www" URL-osoitteesta
private String removeWwwFromUrl(String url) {
  int index = url.indexOf("://www.");
  if (indeksi != -1) {
   return url.substring(0, index + 3) + url.substring(index + 7);
  }

  return (URL);
}

Jäsennä sivu ja etsi linkki
private ArrayList<String> retrieveLinks(URL pageUrl, String pageContents,
   HashSet crawledList, boolean limitHost) {
  Käännä linkin yhteensopivuuskuvio säännöllisillä lausekkeilla.
  Kuvio p = Pattern.compile("<a\\s+href\\s*=\\s*\"?(. *?) [\"|>]",
    Pattern.CASE_INSENSITIVE);
  Matcher m = p.matcher(pageContents);

  ArrayList<String> linkList = uusi ArrayList<String>();
  kun (m.find()) {
   Merkkijonolinkki = m.group(1).trim();

   if (link.length() < 1) {
    jatka;
   }

   Ohita linkki tälle sivulle.
   if (link.charAt(0) == '#') {
    jatka;
   }

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

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

   if (link.indexOf("://") == -1) {
    if (link.charAt(0) == '/') {// käsittelee ehdottomasti
     link = "http://" + pageUrl.getHost() + ":"
       + pageUrl.getPort() + linkki;
    } else {
     Merkkijonotiedosto = pageUrl.getFile();
     if (file.indexOf('/') == -1) {// käsittelee suhteellisia osoitteita
      link = "http://" + pageUrl.getHost() + ":"
        + pageUrl.getPort() + "/" + linkki;
     } else {
      Merkkijonopolku = file.substring(0,
        file.lastIndexOf('/') + 1);
      link = "http://" + pageUrl.getHost() + ":"
        + pageUrl.getPort() + polku + linkki;
     }
    }
   }

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

   linkki = poista WwwFromUrl(linkki);

   URL verifiedLink = verifyUrl(link);
   if (verifiedLink == null) {
    jatka;
   }

   /* Jos rajoitat isäntiä, sulje pois ne URL-osoitteet, jotka eivät täytä kriteerejä */
   if (limitHost
     && !pageUrl.getHost().toLowerCase().equals(
       verifiedLink.getHost().toLowerCase())) {
    jatka;
   }

   Ohittakaa ne linkit, jotka on jo käsitelty.
   if (crawledList.contains(link)) {
    jatka;
   }

   linkList.add(link);
  }

  return (linkList);
}

Hae ladatun verkkosivun sisällöstä selvittääksesi, onko sivulla määritelty hakujono.

private boolean searchStringMatches(String pageContents,
   String searchString, boolean caseSensitive) {
  Merkkijonon hakuSisältö = pageContents;
  if (!caseSensitive) {// if insensitive case
   searchContents = pageContents.toLowerCase();
  }

  Kuvio p = Pattern.compile("[\\s]+");
  String[] termit = p.split(searchString);
  kun (int i = 0; I < termit.pituus; i++) {
   if (caseSensitive) {
    jos (searchContents.indexOf(terms) == -1) {
     palauta väärin;
    }
   } else {
    jos (searchContents.indexOf(terms.toLowerCase()) == -1) {
     palauta väärin;
    }
   }
  }

  return true;
}

Suorita varsinainen etsintäoperaatio
public ArrayList<String> crawl(String startUrl, int maxUrls,
   String searchString, boolean limithost, boolean caseSensitive) {

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

  if (maxUrls < 1) {
   errorList.add("Virheelliset maksimiosoitteiden arvot.");
   System.out.println ("Virheelliset maksimiosoitteiden arvo.");
  }

  if (searchString.length() < 1) {
   errorList.add("Puuttuva hakumerkkijono.");
   System.out.println ("Puuttuva hakumerkkijono");
  }

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

  Siirrä www pois aloitus-URL:stä
  startUrl = poista WwwFromUrl(startUrl);

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

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

   Hanki URL listan alareunasta.
   Merkkijonon url = toCrawlList.iterator().next();

   Poista URL indeksointilistalta.
   toCrawlList.remove(url);

   Muunna merkkijonon URL-osoite URL-objektiksi.
   URL verifiedUrl = verifyUrl(url);

   Ohita URL, jos robotit eivät saa käyttää sitä.
   if (!isRobotAllowed(verifiedUrl)) {
    jatka;
   }

   Lisää käsitellyt URL-osoitteet crawledListiin
   crawledList.add(url);
   Merkkijono pageContents = downloadPage(verifiedUrl);

   if (pageContents != null && pageContents.length() > 0) {
    Hanki kelvollinen linkki sivulta
    <String> ArrayList-linkit = retrieveLinks(verifiedUrl,
      pageContents, crawledList, limitHost);

    toCrawlList.addAll(linkit);

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

  }
  palautustulos;
}

Päätehtävä
public static void main(String[] args) {
  SearchCrawler crawler = uusi SearchCrawler("http://www.itsvse.com/", 100,"Delver_Si");
  Thread search = uusi Thread (crawler);
  System.out.println ("Aloita haku...");
  System.out.println("tulos:");
  search.start();
  kokeile {
   search.join();
  } catch (InterruptedException e) {
   TODO Automaattisesti luotu catch block
   e.printStackTrace();
  }
}
}
[/mw_shl_code]

1.png (100.02 KB, Latausten määrä: 591)

2.png (72.18 KB, Latausten määrä: 596)

3.png (188.46 KB, Latausten määrä: 606)





Edellinen:PHP kattaa 82,2 % 100 W suosituimmista sivustoista
Seuraava:Java Edition Web Source Code Viewer
Julkaistu 30.11.2014 18.07.24 |
Nähdessäni uutisen, että Jack Ma oli vielä 300 miljoonan päässä saavuttamasta Li Ka-shingia ja tullakseen Aasian rikkaimmaksi mieheksi, naurahdin sydämessäni ja tarkistin nopeasti sijoitukseni internetistä, joka ei käytännössä muuttunut, ja sijoitus pysyi noin 1,4 miljardissa, nyt olen helpottunut! Itse asiassa olen myös unelmoiva, lapsesta asti unelmoin, että jonain päivänä ajaisin Lamborghinin urheiluautolla takaisin kotikaupunkiimme aurinkolaseissa, lähes 20 vuoden kovan työn jälkeen, nyt unelma on puoliksi toteutunut, minulla on jo omat aurinkolasit, vain urheiluauto, unelma on pian toteutumassa, ja olen vähän innoissani kun ajattelen sitä!
 Vuokraisäntä| Julkaistu 30.11.2014 18.28.24 |

Verkkoindeksointilaite (tunnetaan myös nimillä verkkohämähäkki, verkkobotti, jota FOAF-yhteisössä useammin kutsutaan verkkojahdajaksi) on ohjelma tai skripti, joka automaattisesti kerää tietoa World Wide Webistä tiettyjen sääntöjen mukaisesti. Muita harvemmin käytettyjä nimiä ovat muurahaiset, automaattiindeksit, emulaattorit tai madot.
Julkaistu 30.11.2014 17.40.16 |
Delver_Si Julkaistu 30.11.2014 klo 17:22
Haluan kirjoittaa työkalun, joka räjäyttää mssql ftp:n ja muita työkaluja, mutta sen käyttö verkossa ei ole helppoa

Kirjoita se, minä olen tukenasi!  Purkutyökalut on yleensä kirjoitettu .netillä, eikä niitä ole montaa Javalla, joten voit kirjoittaa sellaisen Javalla!
Julkaistu 30.11.2014 17.19.07 |
Pyyhin, tämä on hyvä nukke hakkerointityökalun tekemiseen!
Julkaistu 30.11.2014 17.22.22 |
Keräsin sen ensin, vaikka se on nyt hyödytön, uskon että siitä tulee hyötyä tulevaisuudessa!
 Vuokraisäntä| Julkaistu 30.11.2014 17.22.42 |
Haluan kirjoittaa työkalun, joka räjäyttää mssql ftp:n ja muita työkaluja, mutta sen käyttö verkossa ei ole helppoa
Julkaistu 30.11.2014 18.08.16 |
Mitä tarkoitat, etten ymmärrä
 Vuokraisäntä| Julkaistu 30.11.2014 18.32.40 |
ylläpitäjä julkaistu 30.11.2014 klo 17:40
Kirjoita se, minä olen tukenasi!  Purkutyökalut on yleensä kirjoitettu .netillä, eikä niitä ole montaa Javalla, joten voit kirjoittaa sellaisen Javalla!

Setin mssql-blasteri ei pysty edes ampumaan omaani,
 Vuokraisäntä| Julkaistu 30.11.2014 18.33.09 |
testi julkaistu 30.11.2014 klo 18:07
Nähdessään uutisen, että Jack Ma oli vielä 300 miljoonaa vailla saavuttaakseen Li Ka-shingin ja tullakseen Aasian rikkaimmaksi mieheksi, hänen sydämensä loksahti, ja hän tarkisti nopeasti sijoituksensa internetistä, eikä hän ollut käytännössä vaikuttunut...

Olet verkkomestarin liivi, etkö olekin?"
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com