暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何用JAVA做爬虫

大学生IT学习之家 2018-05-23
570

JAVA不仅可以用于开发,还可以做爬虫哦,来爬一些数据,这里讲解一下简单的JAVA爬虫,主要思想就是通过Jsoup的jar包来获取,以抓取智联招聘信息为例。抓取以下信息

    1.先封装一个获取页面信息的方法:

    2.我们要对获取的信息进行处理,这里只是简单的在控制台输出,当然也可   以来显示到页面上。

下面来展示一下打印结果吧


下面分享一下源码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

public class UrlGet {
  static InputStreamReader ins=null;
  static BufferedReader bf=null;
  static StringBuffer sb=null;
  //设置参数为网页地址和,编码方式  最后返回一个页面的字符串
 public static String Get(String urlboj,String encoding){
  try {
   //创建URL对象
   URL ur = new URL(urlboj);
   //建立连接并返回URL连接实例
   URLConnection urc=ur.openConnection();
   //返回在连接读取的输入流
   InputStream st =urc.getInputStream();
   //把获取到的输入流包装成一个字符流,并设置编码方式
    ins =new InputStreamReader(st,encoding);
    //为了高效读取,为字符流增加缓冲流
   bf = new BufferedReader(ins);
   //创建一个字符串常量来存储读取到的数据
    sb=new StringBuffer();
    //设置一个临时字符串
   String temp=null;
   //通过循环读取整行来进行读取
   while((temp=bf.readLine())!=null) {
    //把临时保存在temp中的文件加到字符串常量中,并加一个换行
    sb.append(temp+"\n");
   }
   
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }finally {
   try {
    //关闭资源
    if(bf!=null)
    bf.close();
    if(ins!=null)
    ins.close();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
  //通过toString方法将字符串常量转化为字符串并返回
  return sb.toString();
 }
}

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

public class TestGet {

 public static void main(String[] args) {
  //设置地址
  String url="https://sou.zhaopin.com/jobs/searchresult.ashx?kw=java&sm=0&p=1";
  //调用获取页面的方法
  String html =UrlGet.Get(url, "utf-8");
  //利用Jsoup的parse方法解析获取的页面信息
  Document document = Jsoup.parse(html);
  //通过id获取要得到数据的模块
  Element element = document.getElementById("newlist_list_content_table");
  //通过class获取要得到的模块下边的子列表
  Elements elements = element.getElementsByClass("newlist");
  //用foreach来获取具体的值并输出
  for (Element el : elements) {
   String jobname=el.getElementsByClass("zwmc").text();
   String compangname=el.getElementsByClass("gsmc").text();
   String money=el.getElementsByClass("zwyx").text();
   String jobaddress=el.getElementsByClass("gzdd").text();
   System.out.println("公司名称:"+compangname+";  工作名称:"+jobname+";  月薪:"+money+";  工作地点"+jobaddress);
  }
 }

}




文章转载自大学生IT学习之家,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论