拉勾网爬取招聘信息
将信息封装成类,输出时只需要输出类即可
package com.haina.test;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class LagouTest {
public static void main(String[] args) throws IOException {
Document doc = Jsoup.connect("https://www.lagou.com/zhaopin/Java/?labelWords=label")
//破解服务器的反爬虫限制
//cookir header的作用是为了把我的请求伪装成正常浏览器访问
.cookie("user_trace_token","20200314104508-73c43e00-dc28-4c43-9b67-7301c8984957")
.header("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36")
.get();
Element body = doc.body();
// System.out.println(body.text());
Elements ul = body.getElementsByClass("item_con_list");
// System.out.println(ul.text());
//用样式我们可以获取两个ul,但第一个时空的,所以我们要获取地位个ul
Element ele = ul.get(1);
//通过标签名,来获取ul下面的所有li标签
Elements li = ele.getElementsByTag("li");
for(Element e :li){
String salary = e.attr("data-salary");
// System.out.println(salary);
String company = e.attr("data-company");
// System.out.println(company);
String positionName = e.attr("data-positionname");
// System.out.println(positionName);
Elements exp = e.getElementsByClass("li_b_1");
String expStr = exp.text();
//获取字符串中第一个空格所在位置
int index = expStr.indexOf(" ");
//字符串截取,把第一个空格后面的数据截取出来
// System.out.println(expStr.substring(index+1));
Elements fuli = e.getElementsByClass("li+b_r");
//获取福利,去掉福利中的中文双引号
// System.out.println(fuli.text().replace("“","").replace("”",""));
Position pos = new Position();
pos.setSalary(salary);
pos.setCompany(company);
pos.setPositionName(positionName);
pos.setExp(expStr.substring(index+1));
pos.setFuli(fuli.text().replace("“","").replace("”",""));
System.out.println(pos);
}
}
}
//User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
//user_trace_token=20200314104508-73c43e00-dc28-4;c43-9b67-7301c8984957
//--位置类---------------------------------------
package com.haina.test;
public class Position {
private String salary;
private String company;
private String positionName;
private String exp;
private String fuli;
//get-set 方法 --快捷方式 右键 - source - Generate Getters and Setters
//获取值的方法
public String getSalary(){
return salary;
}
//设置值的方法
public void setSalary(String salary){
this.salary = salary;
}
//自动生成
public String getCompany(){
return company;
}
public void setCompany(String company){
this.company = company;
}
public String getPositionName() {
return positionName;
}
public void setPositionName(String positionName) {
this.positionName = positionName;
}
public String getExp() {
return exp;
}
public void setExp(String exp) {
this.exp = exp;
}
public String getFuli() {
return fuli;
}
public void setFuli(String fuli) {
this.fuli = fuli;
}
//格式化输出数据
@Override//右键 - source - generate tostring
public String toString() {
return "Position [salary=" + salary + ", company=" + company + ", positionName=" + positionName + ", exp=" + exp
+ ", fuli=" + fuli + "]";
}
}
输出:
Position [salary=15k-20k, company=团子出行(原四川汽车票务网), positionName=高级java, exp=, fuli=]
Position [salary=25k-40k, company=招银网络科技, positionName=Java开发工程师, exp=, fuli=]
Position [salary=15k-25k, company=浙江农信, positionName=Java开发工程师, exp=, fuli=]
Position [salary=15k-30k, company=微聚未来, positionName=java开发工程师, exp=, fuli=]
Position [salary=9k-18k, company=深蓝保, positionName=java开发工程师, exp=, fuli=]
Position [salary=20k-40k, company=汽车之家, positionName=java开发工程师, exp=, fuli=]
Position [salary=18k-25k, company=360, positionName=java开发工程师, exp=, fuli=]
Position [salary=12k-18k, company=安恒信息, positionName=Java开发工程师, exp=, fuli=]
Position [salary=25k-40k, company=招银网络科技, positionName=Java开发工程师, exp=, fuli=]
Position [salary=15k-30k, company=腾讯, positionName=java开发工程师, exp=, fuli=]
Position [salary=25k-50k, company=OPPO, positionName=Java开发工程师, exp=, fuli=]
Position [salary=20k-40k, company=华为技术有限公司, positionName=Java开发工程师, exp=, fuli=]
Position [salary=12k-20k, company=科来, positionName=Java开发工程师, exp=, fuli=]
Position [salary=20k-40k, company=玩吧, positionName=Java开发工程师, exp=, fuli=]
Position [salary=25k-50k, company=快手, positionName=Java开发工程师, exp=, fuli=]