今天接到一个任务,要抓取职位列表以及职位的数量,老板做PPT要用到这些数据。
研究君觉得这个还蛮有意思的,马上就贡献给各位了。
平时做爬虫,大家都说用Pyhon简单,其实啊,使用java也很简单。废话少说,上代码:
首先创建maven工程,增加下面的依赖:
<dependencies>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.13.1</version>
</dependency>
</dependencies>
然后增加类:CrawerJobTitle
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import java.io.IOException;
public class CrawerJobTitle {
public static void main(String[] args) throws IOException {
//因为智联上的职位列表比较清晰,且容易抓取,就从智联获取了 Document doc = Jsoup.connect("https://www.zhaopin.com/").get();
Elements newsHeadlines = doc.select("a.zp-jobNavigater__pop--href");//a class="zp-jobNavigater__pop--href for (int i = 0; i < newsHeadlines.size(); i++) {
//抓取51job上的职位数量
String url2 = "https://search.51job.com/list/000000,000000,0000,00,9,99," +
newsHeadlines.get(i).text()+ //职位名称 ",2,1.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare=\t";
Document doc2 = Jsoup.connect(url2).get();
String titleJobBNum = doc2.select("#resultList>div.dw_tlc>div.rt").first().text();
System.out.println(newsHeadlines.get(i).text()+" "+titleJobBNum);
}
}
}
说明两点:
1、这里用到了Jsoup这个工具,Jsoup可厉害了,可以使用Jquery选择器的语法,轻松实现html的解析。
2、51job的搜索,关键字是放在中间的。刚开始我思考关键字怎么传的时候还走了点弯路。仔细琢磨发现很简单,就是放在中间,其他都是写死的。