Java爬虫实战第一篇:微博爬虫

核心:1、有大量的微博uid 2、处理微博的反爬虫

一、开始准备工作

1、获取访问微博网页的cookie

谷歌浏览器访问:https://m.weibo.cn/
按F12进入调试模式
复制如图所示的数据,这就是我们需要的cookie了

Java爬虫实战第一篇:微博爬虫_第1张图片

 2、cookie拿到了,接下来就是写代码模仿浏览器访问内容了

/**
     * 基于HttpClient 4.3的通用Get方法--微博Cookie
     * @param url  提交的URL
     * @return 提交响应
     */
    public static String get_byCookie(String url,String cookie) {
        if(CheckUtil.checkNull(cookie)){
            cookie = "SCF=AjGxj6fuG*****00174";//这里就是刚刚你获取的cookie,有很长
        }
        CloseableHttpClient client = HttpClients.createDefault();
        String responseText = "";
        CloseableHttpResponse response = null;
        try {
            HttpGet method = new HttpGet(url);
            method.addHeader(new BasicHeader("Cookie",cookie));
            RequestConfig config = RequestConfig.custom()
                    .setConnectTimeout(20*1000) // 连接建立超时,毫秒。
                    .build();
            method.setConfig(config);
            response = client.execute(method);
            HttpEntity entity = response.getEntity();
            if (entity != null) {
                responseText = EntityUtils.toString(entity, ENCODING);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                response.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return responseText;
    }

3、有些小盆友就要耐不住了,要试试上面的方法了,但是没用哦,微博在这里还做了反爬虫,返回的微博内容在里面的FM.view中;这里要做额外的处理了;注意,这一步处理是核心代码,是我研究的精华

/**
     * 爬取微博JS内容
     * @param uid
     * @return
     */
    public static Result> get_js_html_byuid(String uid, String cookie){
        //默认无数据
        Result> result = new Result>();
        result.setType(TypeEnum.FAIL.getCode());
        result.setMessage("无数据");
        List weiboReptileList = new ArrayList<>();
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append(smsUtil.get_byCookie("https://weibo.com/u/"+uid,cookie));
        if(stringBuffer!=null){
            Document document = Jsoup.parse(stringBuffer.toString());
            Elements scripts = document.select("script");
            for(Element script : scripts){
                String[] ss = script.html().split("
                    
                    

你可能感兴趣的:(Java爬虫)