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 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)