1、思路:明确需要爬取的信息分析网页结构分析爬取流程优化2、明确需要爬取的信息职位名称工资职位描述公司名称公司主页详情网页分析网页结构3、目标网站-拉勾网网站使用json作为交互数据,分析json数据,需要的json关键数据查看需要的信息所在的位置,使用Jsoup来解析网页4、分析爬取流程1.获取所有的positionId生成详情页,存放在一个存放网址列表中List joburls2.获取每个详情页并解析为Job类,得到一个存放Job类的列表List jobList3.把List jobList存进Excel表格中Java操作Excel需要用到jxl5、关键代码实现public List getJobUrls(String gj,String city,String kd){ String pre_url=""; String end_url=".html"; String url; if (("")){ url=""+city+"&needAddtionalResult=false&first=false&pn="+pn+"&kd="+kd; }else { url=""+gj+"&px=default&city="+city+"&needAddtionalResult=false&first=false&pn="+pn+"&kd="+kd; }String rs=getJson(url); (rs); int total= (rs,"$.");//获取总数 int pagesize=total/15; if (pagesize>=30){ pagesize=30; } (total); // (rs); List posid=(rs,"$.[*].positionId");//获取网页id for (int j=1;j<=pagesize;j++){ //获取所有的网页id pn++; //更新页数 url=""+gj+"&px=default&city="+city+"&needAddtionalResult=false&first=false&pn="+pn+"&kd="+kd; String rs2=getJson(url); List posid2=(rs2,"$.[*].positionId"); (posid2); //添加解析的id到第一个list } List joburls=new ArrayList<>(); //生成网页列表 for (int id:posid){String url3=pre_url+id+end_url; (url3); } return joburls; }public Job getJob(String url){ //获取工作信息 Job job=new Job();Document document= null;document = (getJson(url)); ((".name").text()); ((".salary").text());String joball=((".job_bt").select("div").html());//清除html标签 (joball);//职位描述包含要求((".b2").attr("alt")); Elements elements=(".c_feature"); //((".name").text()); (("a").attr("href")); //获取公司主页 (url); return job; }void insertExcel(List jobList) throws IOException, BiffException, WriteException { int row=1; Workbook wb = (new File()); WritableWorkbook book = (new File(), wb);WritableSheet sheet=(0);for (int i=0;i<();i++){ //遍历工作列表,一行行插入到表格中 (new Label(0,row,(i).getJobname()));(new Label(1,row,(i).getSalary())); (new Label(2,row,(i).getJobdesc()));(new Label(3,row,(i).getCompany())); (new Label(4,row,(i).getCompanysite())); (new Label(5,row,(i).getJobdsite())); row++; } ();();}