一、目的

  • 得到招聘网站中自己想要的相关数据
  • 对HTML进行清洗,保留想要的数据并导出到Excel

二、java实现过程

  • 导入相关架包
    <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.18</version></dependency><!-- https://mvnrepository.com/artifact/org.jsoup/Jsoup --><dependency><groupId>org.jsoup</groupId><artifactId>Jsoup</artifactId><version>1.11.3</version></dependency><!-- excel相关 --><dependency><groupId>com.xuxueli</groupId><artifactId>xxl-excel</artifactId><version>1.0.0</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version><scope>compile</scope></dependency>
  • WorkInfo工作信息实体类
import lombok.Data;
import lombok.ToString;
import java.util.List;@Data
@ToString
public class WorkInfo {String jobName;//职位名称String jobArea;//工作地区String jobPubTime;//发布时间String education;//学历String jobLimit;//限制(工作n年经验、在校/应届)List<String> tags;//标签String detailUrl;//职位详细详细urlWorkDetail workDetail;//岗位要求详细信息Company company;//公司信息}
  • Company公司实体类
在这里插入代码片
  • 主类GetWorkInfo
  • 这里注意修改第83行的cookie_value,
package org.example;import com.xuxueli.poi.excel.ExcelExportUtil;
import org.example.bean.Company;
import org.example.bean.WorkInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;import java.io.FileWriter;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;@Slf4j
public class GetWorkInfo {private static List<WorkInfo> all = new LinkedList<>();public static void main(String[] args) {// 注意几个请求参数String workName="java";//职业名称for (int i = 1; i < 5; i++) {//当前页码iString url = "https://www.zhipin.com/c101280100/?query="+workName+"&page="+i+"&ka=page-"+i;String html = getHtml(url);cleanHtml(html);}System.out.println("一共获取到"+all.size()+"条与["+workName+"相关]的招聘信息");for (WorkInfo workInfo : all) {System.out.println(workInfo);}//保存所有workinfo tag 到文本FileWriter writer;try {writer = new FileWriter("E:/tags.txt");for (WorkInfo workInfo : all) {for (String tag : workInfo.getTags()) {writer.write(tag+"  ");}}writer.flush();writer.close();} catch (IOException e) {e.printStackTrace();}//保存数据到excelExcelExportUtil.exportToFile( all,"E:\\re.xls");}/*** 模拟浏览器请求,获取网页内容* @param url* @return*/public static String getHtml(String url)  {CloseableHttpClient httpClient = null;CloseableHttpResponse response = null;String result = "";// 通过址默认配置创建一个httpClient实例httpClient = HttpClients.createDefault();// 创建httpGet远程连接实例HttpGet httpGet = new HttpGet(url);// 设置请求头信息,鉴权httpGet.setHeader("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.54");//cookie需要手动到网站获取httpGet.setHeader("Cookie", "_bl_uid=2ak8Cl39wtUayvud03U7415wmn52; lastCity=101280100; wt2=DnjgeQY_6OeBVy04-sQp4F_CiAIn9dJpTlC0K33an6klsXW3bnjH4lQPp5AZUW0EQ3xLYz60xQVWaN623Hku8wg~~; Hm_lvt_194df3105ad7148dcf2b98a91b5e727a=1622131357,1622216304,1622278889,1622299753; __g=-; __c=1622299753; __l=l=/www.zhipin.com/c101280100/?query&r=&g=&s=3&friend_source=0&s=3&friend_source=0; __a=83640636.1614948744.1622278840.1622299753.344.24.10.344; Hm_lpvt_194df3105ad7148dcf2b98a91b5e727a=1622305422; __zp_stoken__=4157cYS0UJAEtPDc2DHNwVwlPanNjEH1dPlJtWHRGBA4VJj90f1dVB0VIfFRaeB4FJmQSAFkUXBIrUElmDTACJgJgazwMRXNFNFsHCDEZPVNSWFxLYWgDbRAhN3kHUkN4FkcCPV9HVmdcYHlG; __zp_sseed__=+TM8nqRm+BG8IPVh+stoLe4NGHJh2C4AO17GaA5dk1s=; __zp_sname__=9f0a9905; __zp_sts__=1622305425603");// 设置配置请求参数RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000)// 连接主机服务超时时间.setConnectionRequestTimeout(35000)// 请求超时时间.setSocketTimeout(60000)// 数据读取超时时间.build();// 为httpGet实例设置配置httpGet.setConfig(requestConfig);// 执行get请求得到返回对象try {response = httpClient.execute(httpGet);// 通过返回对象获取返回数据result = EntityUtils.toString(response.getEntity());} catch (IOException e) {e.printStackTrace();}return result;}public static Object cleanHtml(String html){org.jsoup.nodes.Document document = (org.jsoup.nodes.Document) Jsoup.parseBodyFragment(html);//获取bodyElement body = document.body();Elements jobPrimaries = body.getElementById("main").getElementsByClass("job-primary");//遍历所有的招聘信息for (int i = 0; i < jobPrimaries.size(); i++) {//第i条招聘信息Element job = jobPrimaries.get(i);//招聘概要信息WorkInfo workInfo = new WorkInfo();String jobName = job.getElementsByClass("job-name").get(0).text();String jobArea = job.getElementsByClass("job-area-wrapper").get(0).text();String jobPubTime = job.getElementsByClass("job-pub-time").get(0).text();String educationWork = job.getElementsByClass("job-limit").get(0).getElementsByTag("p").get(0).outerHtml();String education = educationWork.substring(educationWork.lastIndexOf("</em>")+5,educationWork.indexOf("</p>"));String jobLimit = job.getElementsByClass("job-limit").get(0).getElementsByTag("p").get(0).text().replace(education,"");String url = "https://www.zhipin.com"+job.getElementsByClass("primary-box").get(0).attr("href");List<String> tagList = new LinkedList<>();Elements tags = job.getElementsByClass("tag-item");for (Element tag : tags) {tagList.add(tag.text());}//公司信息Company company = new Company();String companyName = job.getElementsByClass("company-text").get(0).getElementsByTag("h3").text();String companyType = job.getElementsByClass("company-text").get(0).getElementsByTag("p").get(0).getElementsByTag("a").text();String benefits = job.getElementsByClass("info-desc").get(0).text();company.setCompanyName(companyName);company.setCompanyType(companyType);company.setBenefits(benefits);workInfo.setJobName(jobName);workInfo.setJobArea(jobArea);workInfo.setJobPubTime(jobPubTime);workInfo.setEducation(education);workInfo.setJobLimit(jobLimit);workInfo.setTags(tagList);workInfo.setDetailUrl(url);workInfo.setCompany(company);all.add(workInfo);}return null;}
}
  • 运行结果

上一片文章,介绍使用岗位信息进行制作云图,点击下发连接查看

使用python做云词图片

使用java网络爬虫爬取BOSS直聘岗位信息相关推荐

  1. python爬虫-爬取boss直聘的职位信息

    爬取boss直聘的相应的职位信息: 一个同学今天想找工作,问我有什么好单位,关键我也不清楚,于是我去各大招聘网站搜索了下,有很多招聘信息,看的我眼花缭乱,刚看完的职位,忘记收藏又过去搜索,感觉太麻烦, ...

  2. 写一个爬虫爬取boss直聘网站

    好的,我可以为您简要介绍如何编写一个爬虫来爬取 BOSS 直聘网站. 首先,您需要准备好以下几个东西: 安装 Python,并使用 pip 安装爬虫所需的库,如 requests 和 Beautifu ...

  3. python爬虫爬取Boss直聘网招聘信息

    学校给我们大三同学找了一个培训组织,做了10天的实训,我学习的是python,最后是以一个爬虫程序为结业作业,就着这个实训,顺便发一个博客记录一下.考虑到我们即将就业,所以准备爬一个招聘网站,最终决定 ...

  4. python爬取boss直招_简易python爬虫爬取boss直聘职位,并写入excel

    1,默认城市是杭州,代码如下 #! -*-coding:utf-8 -*- from urllib import request, parse from bs4 import BeautifulSou ...

  5. boss直聘python_简易python爬虫爬取boss直聘职位,并写入excel

    #! -*-coding:utf-8 -*- from urllib import request, parse from bs4 import BeautifulSoup import dateti ...

  6. python爬取boss直聘招聘信息_Python爬虫实战-抓取boss直聘招聘信息

    Python Python开发 Python语言 Python爬虫实战-抓取boss直聘招聘信息 实战内容:爬取boss直聘的岗位信息,存储在数据库,最后通过可视化展示出来 PS注意:很多人学Pyth ...

  7. 爬虫项目——Scrapy爬取Boss直聘

    Scrapy添加代理爬取boss直聘,并存储到mongodb 最终爬取截图 项目创建 items Spider Middleware添加ip代理 Pipeline添加mongodb存储 最终爬取截图 ...

  8. python爬虫教程:Scrapy框架爬取Boss直聘网Python职位信息的源码

    今天小编就为大家分享一篇关于Scrapy框架爬取Boss直聘网Python职位信息的源码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 分析 使用Crawl ...

  9. 【python爬虫】在scrapy中利用代理IP(爬取BOSS直聘网)

    同学们好,我又滚回来更新了,这一次我们要爬取的目标是BOSS直聘,BOSS直聘可以说是反爬虫一个很好的例子了,主要在于如果你访问他的次数过多,他就会出现验证码,要求你通过验证才能继续看,这样还算可以, ...

最新文章

  1. 习惯了收听虾米酷狗网易云音乐的你,好歹知道一下音乐推荐到底是咋回事吧
  2. 世界被一种神秘的数学力量彻底改变了
  3. android 微信跨境支付,微信跨境支付.pdf
  4. android高级篇收录
  5. 关于使用WindowsUpdate 或 Windows 自动升级时碰到的 svchost.exe 进程 CPU 资源占用过高的问题的相关信息...
  6. 算法【二分查找】(数组)
  7. nginx、Apache、IIS服务器解决 413 Request Entity Too Large问题方法汇总
  8. layui上传文件请求接口异常_SpringMVC实现文件上传与下载,拦截器,异常处理
  9. c++ 返回string_JVM系列之:String.intern和stringTable
  10. 作者:刘大伟(1984-),男,博士,烟台中科网络技术研究所助理研究员。
  11. Android小項目之---ListView实现论坛管理效果(附源碼)
  12. Repeater绑定ArrayList数据源
  13. OpenCV 文字绘制——cv::putText详解
  14. java中Executor、ExecutorService、ThreadPoolExecutor介绍(转)
  15. linux shell脚本教程
  16. 转载:LTE中的各种ID含义
  17. JAVA怎么开发一个胖客户端_胖客户端瘦客户端哑终端
  18. AMD:无限你我的无限
  19. 天工艺品-收藏界的“新宠”
  20. 【课程设计】8086汇编实现打字小游戏

热门文章

  1. LS工作日志11/10 打包发布ipa
  2. 用织梦系统仿站操作流程截图版
  3. 分享微信抽奖小程序制作步骤_微信抽奖小程序怎么开发
  4. 西门子S7.Net.dll
  5. 2021CVPR-Cross Modal Focal Loss for RGBD Face Anti-Spoofing
  6. 如何把爱心图片变成“伪像素风”?用 CSS 贼容易!
  7. 打工仔:如何来做微创业
  8. 通达信指标公式编写常用函数(五)——BARSLAST
  9. orical 数据库 搜索语句
  10. HTML CSS JS电影网页设计 DW个人网页制作 Hbuilder制作简单的电影网页 在线电影网页设计与制作 web前端大作业