1、思路:
我們提供的服務有:成都做網(wǎng)站、網(wǎng)站設計、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、湖北ssl等。為1000多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的湖北網(wǎng)站制作公司
明確需要爬取的信息
分析網(wǎng)頁結構
分析爬取流程
優(yōu)化
2、明確需要爬取的信息
職位名稱
工資
職位描述
公司名稱
公司主頁
詳情網(wǎng)頁
分析網(wǎng)頁結構
3、目標網(wǎng)站-拉勾網(wǎng)
網(wǎng)站使用json作為交互數(shù)據(jù),分析json數(shù)據(jù),需要的json關鍵數(shù)據(jù)
查看需要的信息所在的位置,使用Jsoup來解析網(wǎng)頁
4、分析爬取流程
1.獲取所有的positionId生成詳情頁,存放在一個存放網(wǎng)址列表中ListString joburls
2.獲取每個詳情頁并解析為Job類,得到一個存放Job類的列表ListJob jobList
3.把ListJob jobList存進Excel表格中
Java操作Excel需要用到jxl
5、關鍵代碼實現(xiàn)
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");//獲取總數(shù)
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");//獲取網(wǎng)頁id
for (int j=1;j=pagesize;j++){ //獲取所有的網(wǎng)頁id
pn++; //更新頁數(shù)
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();
//生成網(wǎng)頁列表
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:"請?zhí)顚懻_的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、智聯(lián)、拉勾網(wǎng)、酷方網(wǎng)、獵聘網(wǎng)等招聘網(wǎng)站找工作