Cet article décrit la mise en œuvre Java de ramper toutes les fonctions précédentes. Partagez-le pour votre référence, comme suit:
Il doit y avoir un rêve, et s'il se réalisait? Je crois que les amis qui achètent souvent des balles Shuangse et j'aurai une question, quel est les résultats des Balls Shuangse précédents? J'aime si la deuxième balle de couleur a remporté le premier prix de la période précédente? S'il a été gagné, je peux essentiellement abandonner ce pari, car il ne devrait pas y avoir deux tirages consécutifs dans les deux secondes balles de couleur de l'histoire, non? Alors, quels ont été les résultats des tirages précédents? J'ai écrit une classe simple en Java pour ramper tous les résultats de la loterie à double couleur. Je voulais à l'origine développer la version Android, mais parce que l'interface utilisateur et d'autres choses prennent du temps à me préparer, je le développerai à nouveau si j'en ai l'occasion.
Importer java.io.bufferedReader; Importer java.io.bufferedwriter; import java.io.file; import java.io.filewriter; import java.io.ioexception; import java.io.inputstream; java.io.inputStreamReader; importer java.net.httpurlconnection; import java.url; java.util.regex.matcher; import java.util.regex.pattern; importer java.util.zip.gzipinputStream; public class allballs {private static stringbuffer mstringBuffer; public static void main (String [] args) {System.out.println ("Geting ..."); mStringBuffer = new StringBuffer (); String BustanLprefix = "http://kaijiang.zhcw.com/zhcw/html/ssq/list_"; String BUSTUSURLSUFFIX = ".html"; String homeurl = "http://kaijiang.zhcw.com/zhcw/html/ssq/list_1.html"; String pageCountContent = GETHTMLSTRING (HOMEURL); int pageCount = getPageCount (pageCountContent); if (pageCount> 0) {for (int i = 1; i <= pageCount; i ++) {String url = baliseUrlprefix + i + b superseurlSuffix; String pageContent = GethtmlString (URL); if (pageContent! = null &&! pageContent.equals ("")) {getOneTermContent (PageContent); } else {System.out.println ("thread" + i + "page perdue"); } essayez {Thread.Sleep (1200); } catch (exception e) {// todo: greg exception}} file file = new File ("double couleur ball.txt"); if (file.exists ()) {file.delete (); } try {filewriter writer = new FileWriter (fichier); BufferedWriter BufferedWriter = new BufferedWriter (écrivain); BufferedWriter.Write (mStringBuffer.ToString ()); BufferedWriter.Close (); écrivain.close (); } catch (ioException e) {// TODO Bloc de capture généré automatiquement e.printStackTrace (); } // buffredwriter writer = new BufferedWriter (nouvelles sorties)} else {System.out.println ("Les pages de résultats sont 0"); } System.out.println ("complet!"); } / ** * Obtenez le nombre total de pages * @param résultat * / private static int getPageCount (string result) {String regex = "// d + /"> Last Page "; Pattern Pattern = Pattern.comPile (regex); Matcher. content.split ("/" "); casser; } if (Splits! = null && splits.length == 2) {String counwerString = splits [0]; if (coundestring! = null &&! counthstring.equals ("")) {return Integer.ParseInt (countstring); }} return 0; } / ** * Obtenez le code source de la page Web * @return * / private static String gethtmlString (String TargetUrl) {String content = null; HttpurlConnection Connection = null; try {url url = new URL (TargetUrl); connexion = (httpurlConnection) url.openconnection (); connection.setRequestMethod ("post"); connection.setRequestProperty ("User-Agent", "Mozilla / 4.0 (compatible; MSIE 7.0; Windows 7)"); connection.setRequestProperty ("accepter", "image / gif, image / x-xbitmap, image / jpeg, image / pjpeg, application / x-shockwave-flash, application / vnd.ms-PowerPoint, application / vnd.ms-excel, application / msword, * / *"); Connection.SetRequestProperty ("Accept-Language", "ZH-CN"); connection.setRequestProperty ("ua-cpu", "x86"); // Pourquoi n'y a-t-il pas de dégonflage? Connection.setRequestProperty ("accepter-codage", "gzip"); connection.setRequestProperty ("contenu-type", "text / html"); // Keep-Alive, à quoi sert-il? Vous ne visitez pas le site Web, vous le collectez. Hey-hey. Le soulagement de la pression sur les autres est également de vous réduire. connection.setRequestProperty ("connexion", "close"); // N'utilise pas de cache, c'est inutile, car nous n'aurons pas accéder fréquemment à un lien. (Pour le programme) Connection.SetUsecaches (false); connection.setConnectTimeout (6 * 1000); connection.setReadTimeout (6 * 1000); connection.setDoOutput (true); connection.setDoInput (true); Connection.SetRequestProperty ("Charset", "UTF-8"); connection.connect (); if (200 == connection.getResponSECODE ()) {inputStream inputStream = null; if (connection.getContenCoDcoding ()! = null &&! Connection.getContenCoding (). equals ("")) {String encode = connection.getContenCoDcoding (). TolowerCase (); if (encoder! = null &&! Encode.equals ("") && encode.indexof ("gzip")> = 0) {inputStream = new gzipInputStream (connection.getInputStream ()); }} if (null == inputStream) {inputStream = connection.getInputStream (); } BufferedReader Reader = new BufferedReader (new InputStreamReader (InputStream, "UTF-8")); StringBuilder Builder = new StringBuilder (); Chaîne line = null; while ((line = reader.readline ())! = null) {builder.append (line) .append ("/ n"); } content = builder.toString (); }} catch (exception e) {e.printStackTrace (); } enfin {if (connection! = null) {connection.disconnect (); }} return contenu; } private static void getOneTermContent (String pageContent) {String regex = "<td align = /" Center / "style = /" padding-left: 10px; / "> [// s // s] +? </em> </ td>"; Motif motif = motif.compile (regex); Matcher Matcher = Pattern.matcher (PageContent); while (Matcher.Find ()) {String OneTermContent = Matcher.Group (); GetOneTermnumbers (OneTermContent); }} private static void getOneTermNumbers (String OneTermContent) {String regex = "> // d + <"; Motif motif = motif.compile (regex); Matcher Matcher = Pattern.matcher (OneTermContent); while (Matcher.Find ()) {String Content = Matcher.Group (); String BallNumber = Content.SubString (1, Content.Length () - 1); MSTRINGBUFFER.APPEND (BallNumber) .APPEND (""); } mstringbuffer.append ("/ r / n"); }}Résultats en cours:
For more information about Java related content, please check out the topics of this site: "Summary of Java Network Programming Skills", "Summary of Java Socket Programming Skills", "Summary of Java File and Directory Operation Skills", "Tutorial on Java Data Structure and Algorithm", "Summary of Java Operation DOM Node Skills" and "Summary of Java Cache Operation Skills"
J'espère que cet article sera utile à la programmation Java de tous.