WebMagic爬取职友集java开发岗位招聘数据
时间: 2023-09-04 21:06:38 浏览: 83
首先需要了解职友集网站的页面结构和数据格式,可以使用Chrome浏览器的开发者工具进行查看。通过分析可以得知,职友集的职位信息存放在一个JSON格式的数据中,而这个JSON数据又是通过Ajax请求从后台获取的。因此,我们可以使用WebMagic的HttpClientDownloader来模拟发送Ajax请求,从而获取职位信息。
以下是爬取职友集java开发岗位招聘数据的代码:
```
import us.codecraft.webmagic.*;
import us.codecraft.webmagic.downloader.HttpClientDownloader;
import us.codecraft.webmagic.pipeline.ConsolePipeline;
import us.codecraft.webmagic.pipeline.JsonFilePipeline;
import us.codecraft.webmagic.processor.PageProcessor;
import us.codecraft.webmagic.selector.JsonPathSelector;
public class ZhilianProcessor implements PageProcessor {
private Site site = Site.me().setRetryTimes(3).setSleepTime(1000);
@Override
public void process(Page page) {
// 解析JSON数据,获取职位信息
String jsonStr = page.getRawText();
JsonPathSelector jsonPathSelector = new JsonPathSelector("$.data[*]");
page.putField("jobs", jsonPathSelector.selectList(jsonStr));
// 获取下一页的URL,并加入到待爬取队列中
JsonPathSelector nextPageSelector = new JsonPathSelector("$.next_page_url");
String nextPageUrl = nextPageSelector.select(jsonStr);
if (nextPageUrl != null) {
page.addTargetRequest(nextPageUrl);
}
}
@Override
public Site getSite() {
return site;
}
public static void main(String[] args) {
// 设置起始URL
String startUrl = "https://www.jobui.com/webapi/position?job_kwd=java&job_area=010000&area=010000&page=1&sortby=&sortby_desc=&n=0";
// 创建Downloader,模拟发送Ajax请求
HttpClientDownloader downloader = new HttpClientDownloader();
downloader.setProxyProvider(SimpleProxyProvider.from(new Proxy("127.0.0.1", 1080)));
// 创建Spider
Spider spider = Spider.create(new ZhilianProcessor())
.addUrl(startUrl)
.setDownloader(downloader)
.addPipeline(new ConsolePipeline())
.addPipeline(new JsonFilePipeline("D:\\webmagic\\"))
.thread(5);
// 启动爬虫
spider.run();
}
}
```
在代码中,我们首先设置了起始URL,即第一页的职位信息的Ajax请求URL。然后创建了一个HttpClientDownloader对象,并设置了代理服务器。接着创建了一个Spider对象,设置了爬虫的起始URL、Downloader、Pipeline和线程数,并调用run()方法启动爬虫。
在PageProcessor的process()方法中,我们使用JsonPathSelector来解析JSON数据,获取职位信息,并将其保存到Page对象中的jobs字段中。然后再从JSON数据中获取下一页的URL,如果存在,则加入到待爬取队列中。
在本例中,我们将职位信息保存到了控制台和JSON文件中,可以根据需要进行调整。另外,由于职友集网站有反爬虫机制,因此可能需要设置一些反爬虫策略,比如设置User-Agent、Cookies等。
阅读全文