利用Jsoup+java爬取大数据岗位信息

. jsoup介绍
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

二. jsoup功能

  1. 从一个URL,文件或字符串中解析HTML;
  2. 使用DOM或CSS选择器来查找、取出数据;
  3. 可操作HTML元素、属性、 文本;

三. 爬取数据步骤
1.创建一个Java项目。
利用Jsoup+java爬取大数据岗位信息_第1张图片
2.去Jsoup官网下载Jsoup的jar包,导入到项目中。
利用Jsoup+java爬取大数据岗位信息_第2张图片
利用Jsoup+java爬取大数据岗位信息_第3张图片
3.在浏览器登录校园招聘网站,搜索大数据岗位,获取网址和网页源码
利用Jsoup+java爬取大数据岗位信息_第4张图片
4.编写Java代码
package jsoup;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

public class Test {
public static String getHtml(String url,String encoding) {
URL uri = null;
URLConnection conn = null;
BufferedReader br = null;
StringBuffer sb = new StringBuffer();
try {
//建立网络连接
uri = new URL(url);
//打开连接
conn = uri.openConnection();
//使用输入流读取网页数据
InputStream in = conn.getInputStream();
br = new BufferedReader(new InputStreamReader(in, encoding));
String line = null;
while((line = br.readLine()) != null) {
sb.append(new String(line + “\n”));
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (br != null) {
br.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}

public static List> getContent(String url,String encoding){
	//获取网页内容
	String html = getHtml(url, encoding);
	//将网页内容转成document的格式
	Document document = Jsoup.parse(html);
	//获取ul标签
	Elements elements = document.getElementsByClass("searchResultItemDetailed");
	//使用List集合进行收集数据
	List> list = new ArrayList>();
	//使用一个map进行存储数据
	for (Element element : elements) {
		//获取职位名
		String jobName = element.getElementsByClass("searchResultJobName").text().split(" ")[0];
		//获取公司名
		String firmName = element.getElementsByClass("searchResultCompanyname").text();
		//获取城市
		String city = element.getElementsByClass("searchResultJobCityval").text();
		//获取发布时间
		String time = element.getElementsByClass("searchResultKeyval").text().split(" ")[1].split(":")[1];
		
		//获取需求
		String require = element.getElementsByClass("searchResultJobdescription").text();
		
		System.out.println(String.format("职位: %s\n公司名:%s\n城市:%s\n发布时间:%s\n需求: %s\n",jobName,firmName,city,time,require));
		Map map = new HashMap();
		map.put("职位", jobName);
		map.put("公司名", firmName);
		map.put("城市", city);
		map.put("发布时间", time);
		map.put("需求", require);
		System.out.println();
		list.add(map);
	}
	return list;
	
}

public static void main(String[] args) {
	List> content = getContent("https://xiaoyuan.zhaopin.com/full/0/0_0_0_0_0_-1_%E5%A4%A7%E6%95%B0%E6%8D%AE_1_0", "UTF-8");
	System.out.println(content);
}

}

运行效果
利用Jsoup+java爬取大数据岗位信息_第5张图片

你可能感兴趣的:(利用Jsoup+java爬取大数据岗位信息)