应用Jsoup轻松爬取招聘网信息

临近寒假,又有许多公司发布招聘信息。应用Jsoup可以轻松爬取得到招聘网的信息。
准备工具:

  1. Eclipse
  2. jsoup jar包
  3. 谷歌浏览器

jsoup的中文网:http://www.open-open.com/jsoup/

现在开始,我们先找一个招聘网,这里找的是猎聘网。
网址是:https://www.liepin.com/zhaopin/?init=-1&headckid=54e7fd2426d5126f&fromSearchBtn=2&sfrom=click-pc_homepage-centre_searchbox-search_new&ckid=54e7fd2426d5126f&degradeFlag=0&key=java&siTag=k_cloHQj_hyIn0SLM9IfRg~fA9rXquZc5IkJpXC-Ycixw&d_sfrom=search_fp&d_ckId=2bba84c7562115663835f8d46ae681f4&d_curPage=0&d_pageSize=40&d_headId=2bba84c7562115663835f8d46ae681f4&curPage=0

在这里插入图片描述
准备爬取的网址选好后,开启我们的工具Eclipse,新建一个项目。
在这里插入图片描述

新建一个包,然后新建一个Class。
在这里插入图片描述
将我们的jsoup包导入到工程中。
在main方法中加入以下代码。

String url = "https://www.liepin.com/zhaopin/"
				+ "?init=-1&headckid=54e7fd2426d5126f&fromSea"
				+ "rchBtn=2&sfrom=click-pc_homepage-centre_searchbo"
				+ "x-search_new&ckid=54e7fd2426d5126f&degradeFlag=0&key=java"
				+ "&siTag=k_cloHQj_hyIn0SLM9IfRg~fA9rXquZc5IkJpXC-Ycixw&d_sfrom="
				+ "search_fp&d_ckId=2bba84c7562115663835f8d46ae681f4&d_curPage=0&"
				+ "d_pageSize=40&d_headId=2bba84c7562115663835f8d46ae681f4&curPage=0";
		Document doc;
		try {
			doc = Jsoup.connect(url).get();//解析一个url并且返回该页面的html给doc
			System.out.println(doc);
		} catch (IOException e) {
			e.printStackTrace();
		}

运行之后会得到url页面的html。我们现在要做的就是从html中提取出我们想要的内容。
在谷歌浏览器中,打开url的页面,打开开发者工具(F12)。在左上角有个选择工具,点击后在页面上选择要提取的部分,点击后会定位到相应的html位置。
比如这里我要提取每个岗位的名字。
在这里插入图片描述
点击第一个,定位到的html如下
在这里插入图片描述
很明显,我们要提取的位置是红色箭头所指的位置。其所对应的标签是<h3 title=""…>这个标签。我们右键这一行在这里插入图片描述
得到一串字符,这段字符表示的是这个标签的选择器

#sojob > div:nth-child(8) > div > div.job-content > div:nth-child(1) > ul > li:nth-child(1) > div > div.job-info > h3

虽然是一长串,但是要我们要用到的只有最后的div.job-info > h3
具体要怎么选择,如果不太了解HTML的话,可以把复制的选择器一个一个删除直到得到自己想要的内容。
但最好还是学习下html标签,这样可以快速定位到自己想要的标签。
我们回到Eclipse`,修改之前的代码为

String url = "https://www.liepin.com/zhaopin/"
				+ "?init=-1&headckid=54e7fd2426d5126f&fromSea"
				+ "rchBtn=2&sfrom=click-pc_homepage-centre_searchbo"
				+ "x-search_new&ckid=54e7fd2426d5126f&degradeFlag=0&key=java"
				+ "&siTag=k_cloHQj_hyIn0SLM9IfRg~fA9rXquZc5IkJpXC-Ycixw&d_sfrom="
				+ "search_fp&d_ckId=2bba84c7562115663835f8d46ae681f4&d_curPage=0&"
				+ "d_pageSize=40&d_headId=2bba84c7562115663835f8d46ae681f4&curPage=0";
		Document doc;
		try {
			doc = Jsoup.connect(url).get();//解析一个url并且返回该页面的html给doc
			Elements name;//新建一个元素数组,放置的是每一个选择器的标签 内容
			name = doc.select("#sojob > div:nth-child(8) > div > div.job-content > "
					+ "div.job-info > h3");
			System.out.println(name);
		} catch (IOException e) {
			e.printStackTrace();
		}

运行后可以看到依旧是html语言,但是已经是得到我们想到的标签内容了,而不是全部页面的HTML语言。
在这里插入图片描述
我们要怎么得到我们想要的title中的内容呢?
很简单,这些标签内容都放置在name中,name是一个数组,每一行的html是数组里面的一项。
那么第一项就是name.get(0)
运行打印出发现还不是我们要的结果,我们要的结果是h3标签中的属性title中的文本。
Jsoup中的Document对象有个方法是取它对应的属性.attr("属性名")
那么修改成name.get(0).attr("title")
重新打印,是不是出现title中的文本信息了?
在这里插入图片描述
接着我们用一个循环就可以把全部信息打出来了。

public static void main(String[] args) {
		String url = "https://www.liepin.com/zhaopin/"
				+ "?init=-1&headckid=54e7fd2426d5126f&fromSea"
				+ "rchBtn=2&sfrom=click-pc_homepage-centre_searchbo"
				+ "x-search_new&ckid=54e7fd2426d5126f&degradeFlag=0&key=java"
				+ "&siTag=k_cloHQj_hyIn0SLM9IfRg~fA9rXquZc5IkJpXC-Ycixw&d_sfrom="
				+ "search_fp&d_ckId=2bba84c7562115663835f8d46ae681f4&d_curPage=0&"
				+ "d_pageSize=40&d_headId=2bba84c7562115663835f8d46ae681f4&curPage=0";
		Document doc;
		try {
			doc = Jsoup.connect(url).get();//解析一个url并且返回该页面的html给doc
			Elements name;//新建一个元素数组,放置的是每一个选择器的标签 内容
			name = doc.select("div.job-info > h3");
			for (int i = 0; i < name.size(); i++) {
				System.out.println(name.get(i).attr("title"));
			}
			
		} catch (IOException e) {
			e.printStackTrace();
		}
        
	}

至此,便全部完成了。如果需要爬取别的信息,只需要修改标签即可,不过有些网站用这种方法爬取是不行的,大部分还是可以的。
最后完整代码以及爬取的效果如下。

package main;

import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

public class Demo01 {

	public static void main(String[] args) {
		String url = "https://www.liepin.com/zhaopin/"
				+ "?init=-1&headckid=54e7fd2426d5126f&fromSea"
				+ "rchBtn=2&sfrom=click-pc_homepage-centre_searchbo"
				+ "x-search_new&ckid=54e7fd2426d5126f&degradeFlag=0&key=java"
				+ "&siTag=k_cloHQj_hyIn0SLM9IfRg~fA9rXquZc5IkJpXC-Ycixw&d_sfrom="
				+ "search_fp&d_ckId=2bba84c7562115663835f8d46ae681f4&d_curPage=0&"
				+ "d_pageSize=40&d_headId=2bba84c7562115663835f8d46ae681f4&curPage=0";
		Document doc;
		try {
			doc = Jsoup.connect(url).get();//解析一个url并且返回该页面的html给doc
			Elements name;//新建一个元素数组,放置的是每一个选择器的标签 内容
			Elements sal;
			Elements address;
			Elements href;
			name = doc.select("div.job-info > h3");
			sal = doc.select("div.job-info > p.condition.clearfix > span.text-warning");
			address = doc.select("div.job-info > p.condition.clearfix > a");
			href = doc.select("div.job-info > h3 > a");
			for (int i = 0; i < name.size(); i++) {
				System.out.println(name.get(i).attr("title")
						+"    "+sal.get(i).text()
						+"    "+address.get(i).text()
						+"    "+href.get(i).attr("href"));
			}
			
		} catch (IOException e) {
			e.printStackTrace();
		}
        
	}
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值