qq_25002519 2017-05-02 07:41 采纳率: 0%
浏览 1113

为什么抓取不到还报空指针,希望各路大神能帮忙解决下

package com;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

/**

  • 网页数据抓取工具类 * */

public class Damo {

/**
 * 获取网页源代码
 * @throws IOException 
 * @throws IOException 
 *
 */

public static String getHtmlResouceByUrl(String url,String encoding) {
    URL urlObj=null;
    URLConnection uc=null;
    InputStreamReader isr=null;
    BufferedReader reader=null;
    StringBuffer buffer=null;
    try {
        //建立网络连接
        urlObj=new URL(url);
        //打开网络连接
        try {
            uc=urlObj.openConnection();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //建立文件输入流
        try {
            isr=new InputStreamReader(uc.getInputStream(),encoding);
        } catch (UnsupportedEncodingException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        //建立缓存写入
        reader = new BufferedReader(isr);
        //临时
        String temp=null;
        try {
            while ((temp=reader.readLine())!=null) {

// buffer.append(temp+"\n");
System.out.println(temp+"\n");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{

        if(isr!=null){
            //关闭流
            try {
                isr.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            }


    }


    return buffer.toString();
}

/*

  • 爬取互动值
    */
    public static List> getInFo(String url,String encoding){
    //拿到源代码
    String html = getHtmlResouceByUrl(url, encoding);
    //解析代码文件
    Document document = Jsoup.parse(html);
    //获取代码的具体内容
    Element element = document.getElementById("1");
    //获取结果
    Elements elements = document.getElementsByClass("f_card_lricon");

    List<HashMap<String, String>> maps =new ArrayList<HashMap<String,String>>();    
    
    HashMap<String, String> map =null;
     for (Element el : elements) {
        map = new HashMap<String, String>();
        //获取评论数
        String comment=el.getElementsByClass("comment").text();
    
        //获取标题
        String comment1=el.getElementsByClass("f_card_h4").text();
    
        map.put(comment, "f_card_lricon");
        map.put(comment1,"f_card_h4");
    
        maps.add(map);
    }
    
    return maps;
    

    }

    public static void main(String[] args) {
    // String webString=getHtmlResouceByUrl("http://news.baidu.com/","utf-8");
    // String webString=getHtmlResouceByUrl("http://www.163.com/","gbk");
    // System.out.println(webString);
    String urlString = "http://k.sina.cn/article_1707602817_65c7f381001002v4u.html?kfrome=auto&local=&subch=3&vt=4";
    List> list =getInFo(urlString, "utf-8");
    System.out.println(list);

    }
    }
    图片说明

  • 写回答

1条回答 默认 最新

  • AngusC· 2017-05-06 06:30
    关注

    空指针你先判断哈,判断是否为空,不为空执行,为空执行为空的逻辑,这样就不会报错了

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败