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);
}
}
}