使用jsoup爬虫抓取页面

httpclient 和jsoup都可以实现模拟浏览器抓取页面,前者发送请求,后者解析htm标签比较强大。本例直接使用jsoup实现请求和解析。


package com.chongdong.log.test;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.jsoup.Connection;
import org.jsoup.Connection.Method;
import org.jsoup.Jsoup;
import org.jsoup.helper.HttpConnection.Response;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import org.junit.Test;
/**
 * 
* 类名称:JsoupTest   
* 类描述:    jsoup  抓取 mitsuku聊天 信息
* 创建人:zk   
* 创建时间:2015-7-20 下午3:52:06   
* 修改人:zk   
* 修改时间:2015-7-20 下午3:52:06   
* 修改备注:   
* 开发进度:
* @version  1.0  
*
 */
public class JsoupTest {





    public  static  void  postMitSuKu(){
        Map<String, String> map = new HashMap<String, String>();
        /**  表单 提交的参数 
         *  input:how old  are  you
            botid:9fa364f2fe345a10
            custid:c04f62ad1e044059
            faq : http://www.pandorabots.com/botmaster/en/faq#h1
         * **/
        map.put("input", "hi");
        map.put("botid", "9fa364f2fe345a10");  //开启 可在 跳转到聊天框界面 获取  标示
        map.put("custid", "c04f62ad1e044059");  //当一个空请求 即可获取 相当于 标示
        Connection conn = Jsoup.connect("http://fiddle.pandorabots.com/pandora/talk-xml");
    /*  conn.header("(Request-Line)", "POST /cgi-bin/login?lang=zh_CN HTTP/1.1");*/
        conn.header("Accept", "*/*");
        conn.header("Accept-Encoding", "gzip,deflate,sdch");
        conn.header("Accept-Language", "zh-CN,zh;q=0.8");
/*      conn.header("Content-Length", "58");*/
        conn.header("Origin", "http://www.square-bear.co.uk");
        conn.header("Pragma", "no-cache");
        conn.header("Connection", "Keep-Alive");
        //必须 填写  表单提交
        conn.header("Content-Type", "application/x-www-form-urlencoded");
        conn.header("Host", "fiddle.pandorabots.com");
        conn.header("Referer", "http://www.square-bear.co.uk/mitsuku/mitsy_retro.swf");
        conn.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36");
        try {
            Response response = (Response) conn.ignoreContentType(true).method(Method.POST).data(map).execute();
            //response.
            String json=response.body();
        System.out.println(json);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    /
    //方案2:    通过 开发抓包工具可知  表单的提交方式  应该为http post  此处为 get  方法 不合适
    /**
         * 请求英文对话的网页,抓取结果
         * @param url   
         * @return
         */


        private static String processLogic(String url){
            String result = "";
            try {
                    Document document = Jsoup.connect(url).ignoreContentType(true).ignoreHttpErrors(true)
                    .followRedirects(true).timeout(5000).userAgent("Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/4.0;)").get();
                    Elements elements = document.select("result that");
                    result = elements.text();
                    System.out.println(result);
            } catch (Exception e) {
                e.printStackTrace();
                result = "ok";
            }
            return result;
        }
    public static void main(String[] args) {
        for (int i = 0; i < 100; i++) {
        //  Thread  thread=new Thread();
            //thread.start();
            postMitSuKu();
        }

        /*
         通过 开发抓包工具可知  表单的提交方式  应该为http post  此处为 get  方法 不合适
        String url = "http://fiddle.pandorabots.com/pandora/talk-xml?input=%s&botid=9fa364f2fe345a10&custid=bbbb30debe1bc7f7";
        processLogic(url);
        */
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值