Este artigo descreve a implementação de Java de rastejar todas as funções anteriores. Compartilhe -o para sua referência, como segue:
Deve haver um sonho, e se for realizado? Acredito que amigos que costumam comprar bolas shuangse e terei uma pergunta, que foram os resultados das bolas de Shuangse anteriores? Gosto se a segunda bola colorida ganhou o primeiro prêmio no período anterior? Se foi vencido, posso basicamente desistir dessa aposta, porque não deve haver dois empates consecutivos nas duas segundas bolas coloridas na história, certo? Então, quais foram os resultados dos desenhos anteriores? Eu escrevi uma aula simples em Java para rastejar todos os resultados da loteria de bola de cores duplas. Originalmente, eu queria desenvolver a versão do Android, mas como a interface do usuário e outras coisas levam tempo para se preparar, desenvolverei -a novamente se tiver a chance.
importar java.io.bufferedReader; importar java.io.bufferedwriter; importar java.io.file; importar java.io.fileWriter; importar java.io.ioException; importar java.io.inTream; import java.inInTrenReread; java.util.regex.matcher; importar java.util.regex.pattern; importar java.util.zip.gzipinputStream; classe pública Allballs {private static stringbuffer mstringbuffer; public static void main (string [] args) {System.out.println ("Geting ..."); mStringBuffer = new StringBuffer (); String baseUrlPrefix = "http://kaijiang.zhcw.com/zhcw/html/ssq/list_"; String base bashurlSuffix = ".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 = baseurlPrefix + i + baseurlSuffix; String pageContent = GethtmlString (URL); if (pageContent! = null &&! PageContent.equals ("")) {getOnetermContent (PageContent); } else {System.out.println ("thread" + i + "página perdida"); } tente {thread.sleep (1200); } catch (Exceção e) {// TODO: HOLANDE Exception}} arquivo file = new File ("Double Color Ball.txt"); if (file.exists ()) {file.delete (); } tente {fileWriter writer = new FileWriter (FILE); Bufferwriter bufferwriter = new bufferwriter (escritor); bufferwriter.write (mstringbuffer.toString ()); bufferwriter.close (); writer.close (); } catch (ioexception e) {// TODO GATO GENERADO AUTOMENTADO BLOCO E.PRINTSTACKTRACE (); } // bufferwriter writer = new bufferWriter (novas saídas)} else {System.out.println ("As páginas de resultado são 0"); } System.out.println ("Complete!"); }/*** Obtenha o número total de páginas* @param resultado*/privado estático int getPageCount (resultado da string) {string regex = "// d+/"> última página "; padring padrony = padring.compile (regex); foder foder = padring.matcher (resultado); string [] string (string; content.split ("/" "); quebrar; } if (splits! = null && splits.length == 2) {string countString = splits [0]; if (CountString! = NULL &&! countString.equals ("" ") {return integer.parseint (CountString); }} retornar 0; } / *** Obtenha o código -fonte da página da web* @return* / string estática privada GethtmlString (String Targeturl) {String Content = null; Conexão httpurlConnection = null; tente {url url = novo url (TargetUrl); conexão = (httpurlConnection) url.openconnection (); Connection.SetRequestMethod ("Post"); Connection.SetRequestProperty ("User-Agent", "Mozilla/4.0 (Compatível; MSIE 7.0; Windows 7)"); Connection.SetRequestProperty ("Aceitar", "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 ("Acept-Language", "ZH-CN"); Connection.setRequestProperty ("UA-CPU", "x86"); // Por que não há não desviar? Connection.setRequestProperty ("aceitar-codificação", "gzip"); Connection.setRequestProperty ("conteúdo-tipo", "text/html"); // Keep-alive, qual é a utilidade? Você não está visitando o site, está coletando. Ei-hey. Aliviar a pressão sobre os outros também está se reduzindo. Connection.SetRequestProperty ("Connection", "Close"); // Não use cache, é inútil, porque não acessaremos um link com frequência. (Para o programa) 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.getContentEncoding ()! = null &&! Connection.getContentEncoding (). Equals ("")) {String code = Connection.getContentEncoding (). ToLowerCase (); if (codificam! }} if (null == inputStream) {inputStream = conexão.getInputStream (); } Bufferreader leitor = new buffarreder (new inputStreamReader (inputStream, "utf-8")); StringBuilder Builder = new StringBuilder (); Linha de string = null; while ((line = reader.readline ())! = null) {builder.append (line) .append ("/n"); } content = builder.toString (); }} catch (Exceção e) {e.printStackTrace (); } finalmente {if (conexão! = null) {conexão.disconnect (); }} retornar conteúdo; } private estático void getOneTermContent (string pageContent) {string regex = "<td align =/" Center/"style =/" Padding-left: 10px;/"> [// s/s]+? </em> </td>"; Padrão padrão = padrão.compile (regex); Matcher Matchaer = Pattern.Matcher (PageContent); while (matcher.find ()) {string onetermContent = matcher.group (); getOnetermnumbers (OnetermContent); }} private estático void getOnetermnumbers (string onetermContent) {string regex = "> // d+<"; Padrão padrão = padrão.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"); }}Resultados em execução:
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"
Espero que este artigo seja útil para a programação Java de todos.