zoukankan      html  css  js  c++  java
  • 解析selenium http://blog.csdn.net/java2000_net/article/details/3721706

    • package com.laozizhu.apache.httpclient;
    • import java.net.Socket;
    • import java.util.regex.Matcher;
    • import java.util.regex.Pattern;
    • import org.apache.http.ConnectionReuseStrategy;
    • import org.apache.http.HttpHost;
    • import org.apache.http.HttpResponse;
    • import org.apache.http.HttpVersion;
    • import org.apache.http.impl.DefaultConnectionReuseStrategy;
    • import org.apache.http.impl.DefaultHttpClientConnection;
    • import org.apache.http.message.BasicHttpRequest;
    • import org.apache.http.params.BasicHttpParams;
    • import org.apache.http.params.HttpParams;
    • import org.apache.http.params.HttpProtocolParams;
    • import org.apache.http.protocol.BasicHttpContext;
    • import org.apache.http.protocol.BasicHttpProcessor;
    • import org.apache.http.protocol.ExecutionContext;
    • import org.apache.http.protocol.HttpContext;
    • import org.apache.http.protocol.HttpRequestExecutor;
    • import org.apache.http.protocol.RequestConnControl;
    • import org.apache.http.protocol.RequestContent;
    • import org.apache.http.protocol.RequestExpectContinue;
    • import org.apache.http.protocol.RequestTargetHost;
    • import org.apache.http.protocol.RequestUserAgent;
    • import org.apache.http.util.EntityUtils;
    • /**
    •  * HttpClient使用例子:读取CSDN的所有投票状态
    •  * 
    •  * @author 老紫竹(java2000.net)
    •  */
    • public class HttpGet {
    •   public static void main(String[] args) throws Exception {
    •     HttpParams params = new BasicHttpParams();
    •     // HTTP 协议的版本,1.1/1.0/0.9
    •     HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
    •     // 字符集
    •     HttpProtocolParams.setContentCharset(params, "UTF-8");
    •     // 伪装的浏览器类型
    •     // IE7 是
    •     // Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)
    •     //
    •     // Firefox3.03
    •     // Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.0.3)
    •     // Gecko/2008092417 Firefox/3.0.3
    •     //
    •     HttpProtocolParams.setUserAgent(params, "HttpComponents/1.1");
    •     HttpProtocolParams.setUseExpectContinue(params, true);
    •     BasicHttpProcessor httpproc = new BasicHttpProcessor();
    •     httpproc.addInterceptor(new RequestContent());
    •     httpproc.addInterceptor(new RequestTargetHost());
    •     httpproc.addInterceptor(new RequestConnControl());
    •     httpproc.addInterceptor(new RequestUserAgent());
    •     httpproc.addInterceptor(new RequestExpectContinue());
    •     HttpRequestExecutor httpexecutor = new HttpRequestExecutor();
    •     HttpContext context = new BasicHttpContext(null);
    •     HttpHost host = new HttpHost("vote.csdn.net", 80);
    •     DefaultHttpClientConnection conn = new DefaultHttpClientConnection();
    •     ConnectionReuseStrategy connStrategy = new DefaultConnectionReuseStrategy();
    •     context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
    •     context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, host);
    •     System.out.println("<table>");
    •     try {
    •       // 这个85是因为目前有85页,如果有更多的页,需要手工修改或者传参数进来
    •       for (int i = 1; i <= 85; i++) {
    •         if (!conn.isOpen()) {
    •           Socket socket = new Socket(host.getHostName(), host.getPort());
    •           conn.bind(socket, params);
    •         }
    •         BasicHttpRequest request = new BasicHttpRequest("GET",
    •             "http://vote.csdn.net/VoteList.aspx?page=" + i);
    •         context.setAttribute(ExecutionContext.HTTP_REQUEST, request);
    •         request.setParams(params);
    •         httpexecutor.preProcess(request, httpproc, context);
    •         HttpResponse response = httpexecutor.execute(request, conn, context);
    •         response.setParams(params);
    •         httpexecutor.postProcess(response, httpproc, context);
    •         // 返回码
    •         if (response.getStatusLine().getStatusCode() != 200) {
    •           break;
    •         }
    •         parseData(EntityUtils.toString(response.getEntity()));
    •         if (!connStrategy.keepAlive(response, context)) {
    •           conn.close();
    •         }
    •       }
    •     } finally {
    •       conn.close();
    •     }
    •     System.out.println("</table>");
    •   }
    •   static final Pattern p = Pattern
    •       .compile(
    •           "<h4>.*?<a href=.*?voteid=(//d+)/">(.*?)</a></h4>.*?发起人:<a href=.*?>(.*?)</a>.*?<a href=.*?>(//d+) 人投票</a>",
    •           Pattern.DOTALL);
    •   /**
    •    * 解析页面,得到投票编号,题目,发起人和参与人数
    •    * 
    •    * @param msg
    •    */
    •   public static void parseData(String msg) {
    •     String[] parts = msg.split("div class=/"kimi_modifysty/">");
    •     Matcher m;
    •     for (String s : parts) {
    •       m = p.matcher(s);
    •       if (m.find()) {
    •         System.out.println("<tr><td>" + m.group(1)
    •             + "</td><td><a href='http://vote.csdn.net/VotePost.aspx?voteid=" + m.group(1) + "'>"
    •             + m.group(2).replace(",", ",") + "</a></td><td>" + m.group(3) + "</td><td>"
    •             + m.group(4) + "</td></tr>");
    •       }
    •     }
    •   }
    • }
  • 相关阅读:
    怎样快速学会ZBrush 中的移动笔刷的运用
    ZBrush中如何才能快速完成脸部雕刻(下)
    ZBrush中如何才能快速完成脸部雕刻(上)
    ZBrush中的Clip剪切笔刷怎么快速运用
    ZBrush中必须记住的常用快捷键
    怎么在ZBrush中渲染漫画风格的插画
    怎么运用ZBrush中的Z球制作身体部分
    ZBrush中的笔刷该怎样制作
    如何在ZBrush中添加毛发
    App交互demo
  • 原文地址:https://www.cnblogs.com/wjy123/p/7661572.html
Copyright © 2011-2022 走看看