十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
1、思路:
我们提供的服务有:成都做网站、网站设计、微信公众号开发、网站优化、网站认证、湖北ssl等。为1000多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的湖北网站制作公司
明确需要爬取的信息
分析网页结构
分析爬取流程
优化
2、明确需要爬取的信息
职位名称
工资
职位描述
公司名称
公司主页
详情网页
分析网页结构
3、目标网站-拉勾网
网站使用json作为交互数据,分析json数据,需要的json关键数据
查看需要的信息所在的位置,使用Jsoup来解析网页
4、分析爬取流程
1.获取所有的positionId生成详情页,存放在一个存放网址列表中ListString joburls
2.获取每个详情页并解析为Job类,得到一个存放Job类的列表ListJob jobList
3.把ListJob jobList存进Excel表格中
Java操作Excel需要用到jxl
5、关键代码实现
public ListString getJobUrls(String gj,String city,String kd){
String pre_url="";
String end_url=".html";
String url;
if (gj.equals("")){
url=";city="+city+"needAddtionalResult=falsefirst=falsepn="+pn+"kd="+kd;
}else {
url=""+gj+"px=defaultcity="+city+"needAddtionalResult=falsefirst=falsepn="+pn+"kd="+kd;
}
String rs=getJson(url);
System.out.println(rs);
int total= JsonPath.read(rs,"$.content.positionResult.totalCount");//获取总数
int pagesize=total/15;
if (pagesize=30){
pagesize=30;
}
System.out.println(total);
// System.out.println(rs);
ListInteger posid=JsonPath.read(rs,"$.content.positionResult.result[*].positionId");//获取网页id
for (int j=1;j=pagesize;j++){ //获取所有的网页id
pn++; //更新页数
url=""+gj+"px=defaultcity="+city+"needAddtionalResult=falsefirst=falsepn="+pn+"kd="+kd;
String rs2=getJson(url);
ListInteger posid2=JsonPath.read(rs2,"$.content.positionResult.result[*].positionId");
posid.addAll(posid2); //添加解析的id到第一个list
}
ListString joburls=new ArrayList();
//生成网页列表
for (int id:posid){
String url3=pre_url+id+end_url;
joburls.add(url3);
}
return joburls;
}
public Job getJob(String url){ //获取工作信息
Job job=new Job();
Document document= null;
document = Jsoup.parse(getJson(url));
job.setJobname(document.select(".name").text());
job.setSalary(document.select(".salary").text());
String joball=HtmlTool.tag(document.select(".job_bt").select("div").html());//清除html标签
job.setJobdesc(joball);//职位描述包含要求
job.setCompany(document.select(".b2").attr("alt"));
Elements elements=document.select(".c_feature");
//System.out.println(document.select(".name").text());
job.setCompanysite(elements.select("a").attr("href")); //获取公司主页
job.setJobdsite(url);
return job;
}
void insertExcel(ListJob jobList) throws IOException, BiffException, WriteException {
int row=1;
Workbook wb = Workbook.getWorkbook(new File(JobCondition.filename));
WritableWorkbook book = Workbook.createWorkbook(new File(JobCondition.filename), wb);
WritableSheet sheet=book.getSheet(0);
for (int i=0;ijobList.size();i++){ //遍历工作列表,一行行插入到表格中
sheet.addCell(new Label(0,row,jobList.get(i).getJobname()));
sheet.addCell(new Label(1,row,jobList.get(i).getSalary()));
sheet.addCell(new Label(2,row,jobList.get(i).getJobdesc()));
sheet.addCell(new Label(3,row,jobList.get(i).getCompany()));
sheet.addCell(new Label(4,row,jobList.get(i).getCompanysite()));
sheet.addCell(new Label(5,row,jobList.get(i).getJobdsite()));
row++;
}
book.write();
book.close();
}
script type="text/javascript" src="../js/jquery-1.4.1.min.js"/script
script type="text/javascript" src="../js/jquery.validate.min.js"/script
script type="text/javascript"
$(function(){
$("#f").validate({
rules:{
email:{
required:true,
email:true
},
nickname:{
required:true,
minlength:4,
maxlength:20
},
password:{
required:true,
minlength:6,
maxlength:20
},
password1:{
required:true,
equalTo:"#txtPassword"
},
number:{
required:true,
remote:"checkCode.action" }
},
messages:{
email:{
required:"登录名必须填写",
email:"请填写正确的Email格式"
},
nickname:{
required:"昵称必须填写",
minlength:"昵称长度不得小于4位",
maxlength:"昵称长度不得超过20位"
},
password:{
required:"密码必须填写",
minlength:"密码长度不得小于6位",
maxlength:"密码长度不得超过20位"
},
password1:{
required:"请输入密码验证",
equalTo:"必须与上面密码相同"
},
number:{
required:"验证码必须填写",
remote:"验证码输入错误"
}
}
});
});
/script
这是用jquery的一个jquery.validate.min.js插件写的 其实可以用js完成
java程序员可以去51job、智联、拉勾网、酷方网、猎聘网等招聘网站找工作