利用java爬取51job招聘信息

大体思路:首先了解一下51job的url地址的规则(听上去有点扯😅,但其实也是最为便捷的方式),然后发送一下http请求,接受返回值并正确解析即可。
具体代码:
首先准备一下接收类(实体类)

package testpoll;

import lombok.Data;

@Data
public class Jobs {
	private Integer jobId;//自动增长id
	private String jobName; //岗位
	private String companyName;//公司名
	private String workAddr;//公司地址
	private String salary;//薪水
	private String pushDate;//发布日期
	private String url;//跳转地址
}

然后还需要一个解析器(将返回的页面,从中取出想要的值)页面返回的是一整个json对象,直接解析就好了

    public static List<Job> jobParse(String entity) {
		List<Job> data = new ArrayList<Job>();
		JSONObject jsonObject = JSON.parseObject(entity);
		List<JSONObject> t =(List<JSONObject>)jsonObject.get("engine_search_result");
		for (JSONObject element : t) {
			Job jobs = new Job();
			String title = (String)element.get("job_name");
			String complany = (String)element.get("company_name");
			String address = (String)element.get("workarea_text");
			String salary = (String)element.get("providesalary_text");
			String dates = (String)element.get("issuedate");
			String href = (String)element.get("job_href");
			if (StringUtils.isEmpty(title) || StringUtils.isEmpty(complany)|| StringUtils.isEmpty(address)
					|| StringUtils.isEmpty(salary) || StringUtils.isEmpty(dates) ||StringUtils.isEmpty(href)) {
				continue;
			}
			jobs.setJobName(title);
			jobs.setCompanyName(complany);
			jobs.setWorkAddr(address);
			jobs.setSalary(salary);
			jobs.setPushDate(dates);
			jobs.setUrl(href);
			data.add(jobs);
		}
		return data;
	}

最后就是调用过程了(发送http请求的方式有很多种,我这里使用的是hutool的HttpUtil,其实RestTemplate或者HttpClient这些都是一样的)

    public static List<Job> getJobs(){
		//https://search.51job.com/list/080200%252C020000%252C070200%252C070300%252C080300,000000,0000,00,9,99,java,2,1.html
		//https://search.51job.com/list/080200%252C020000%252C070200%252C070300%252C080300,000000,0000,00,9,99,java,2,1.html?workyear=01
		int pagesize = 20;
		List<Job> ans = new ArrayList<>();
		for (int i = 1; i <= pagesize; i++) {
			String url = "https://search.51job.com/list/080200%252C020000%252C070200%252C070300%252C080300,000000,0000,00,9,99,java,2," + i + ".html";
			String s = HttpUtil.get(url);
			ans.addAll(JobUtil.jobParse(s));
		}
		return ans;
	}

结果:

 

最后得到的数据,放到redis这样的缓存中或者数据库即可。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
以下是一个简单的使用Python爬取51job招聘信息的示例程序: ```python import requests from bs4 import BeautifulSoup url = 'https://search.51job.com/list/000000,000000,0000,00,9,99,python,2,1.html' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') job_list = soup.find_all('div', class_='el') for job in job_list: job_name = job.find('a', class_='t').text.strip() company_name = job.find('span', class_='t2').text.strip() location = job.find('span', class_='t3').text.strip() salary = job.find('span', class_='t4').text.strip() job_url = job.find('a', class_='t')['href'] print(job_name, company_name, location, salary, job_url) ``` 该程序使用requests库和BeautifulSoup库来获取和解析51job网站招聘信息页面。它首先构建了目标页面的URL,并使用requests库发送HTTP请求,然后使用BeautifulSoup库解析响应的HTML内容。程序从解析后的HTML中查找招聘信息的列表,然后使用循环迭代每个招聘信息,并从每个信息中提取必要的信息,例如职位名称,公司名称,地点,薪资和招聘链接。最后,程序将提取的信息打印到控制台中。 需要注意的是,该示例程序只能爬取第一页的招聘信息。如果需要爬取更多的页面,需要修改URL中的页码参数。通过修改页码参数,可以实现爬取更多页面的招聘信息

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值